【问题标题】:Calling method from viewcontroller to class xcode从视图控制器调用方法到类 xcode
【发布时间】:2014-10-19 04:32:26
【问题描述】:

我不知道这是否可能,但我想在类对象中调用视图控制器的方法。我的视图控制器的.m 文件中有这样的方法:

-(void)showLeaderBoard
{
    GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
    if (leaderboardController != nil){
        leaderboardController.leaderboardDelegate = self;
        [self presentModalViewController: leaderboardController animated: YES];
    }
}

我想在SKScene 文件中调用该方法。

【问题讨论】:

  • 你自己试试吧
  • 我试图自己解决,但由于缺乏我的技能,我不知道如何。
  • 这就是您应该在帖子中提及的内容、您尝试过的内容以及遇到的错误。当然有可能,毕竟视图控制器是一个类

标签: ios xcode methods viewcontroller game-center-leaderboard


【解决方案1】:

一种方法称为委托。简而言之,您允许视图控制器成为对象的委托,因此当对象想要执行视图控制器所做的某事时,它可以告诉其委托(视图控制器)何时执行。

第 1 步:在对象上创建委托属性(在对象 .h 文件中):

// be sure to import the view controller's header here
@property (nonatomic, retain) YourViewControllerClass *delegate;

第 2 步:当您在视图控制器中创建对象时,将视图控制器设置为对象委托:

SKScene *theScene = // however you create your scene object here
theScene.delegate = self;

第 3 步: 在视图控制器的标头中公开您希望对象调用的任何方法:

- (void)showLeaderBoard;

第 4 步:当你想要时,告诉对象的委托做任何你想做的事(在 SKScene .m 文件中):

[self.delegate showLeaderBoard];

【讨论】:

  • 非常感谢迈克!我搞砸了将近半天,仍然无法使其工作。现在它很棒。 (Y)
  • 嗯...还有一件小事。当我在另一个场景中配置和创建新场景时,我应该如何委托。 “scene.delegate = self;”在这种情况下不起作用。
  • 在另一个场景中创建场景是什么意思?
  • 在 MyScene.m 文件中,当用户触摸主页按钮时,我创建并配置了实际上是 Menu.m 场景的场景。
  • 您想要同一个代表吗?您总是可以在那里传递委托引用,或者如果您希望另一个委托遵循与上述相同的模式。
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多