故事板-引用AppDelegate中的ViewController

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)

考虑以下场景:我有一个基于故事板的应用程序。我将ViewController对象添加到情节提要中,将该ViewController的类文件添加到项目中,并在IB标识检查器中指定新类的名称。现在,我将如何从AppDelegate编程地引用这个ViewController呢?我已经用相关的类创建了一个变量,并将其转换为IBOutlet属性,但是我看不到有任何方法能够在代码中引用新的ViewController--任何试图拖动连接的尝试--都是行不通的。

也就是说,在AppDelegate中,我可以像下面这样访问基ViewController

(MyViewController*) self.window.rootViewController

但是故事板中包含的任何其他ViewController如何?

提问于
用户回答回答于

使用在IB属性检查器中设置的标识符从情节提要实例化视图控制器:

编辑以添加示例代码:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle: nil];

MyViewController *controller = (MyViewController*)[mainStoryboard 
                    instantiateViewControllerWithIdentifier: @"<Controller ID>"];
用户回答回答于

如果你用XCode5你应该用另一种方式来做这件事。

  • 选择UIViewControllerUIStoryboard
  • Identity Inspector在右上窗格上
  • 检查Use Storyboard ID复选框
  • 将唯一的id写入Storyboard ID场域

那就写你的代码。

// Override point for customization after application launch.

if (<your implementation>) {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" 
                                                             bundle: nil];
    YourViewController *yourController = (YourViewController *)[mainStoryboard 
      instantiateViewControllerWithIdentifier:@"YourViewControllerID"];
    self.window.rootViewController = yourController;
}

return YES;

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问4 回答
  • uncle_light

    5 粉丝518 提问4 回答
  • 人生的旅途

    11 粉丝484 提问3 回答
  • Hyman.W

    15 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动