是否可以在Storyboard中按住Ctrl键拖动来设置UINavigationControllerDelegate?

时间:2014-02-01 17:36:40

标签: xcode xcode5

在Xcode 5.0.2中,我创建了带有导航控制器的an app for iPhone和另外3个视图控制器(这里是fullscreen):

xcode screenshot

我希望LoginViewController(上面屏幕截图中的“登录”标题)是导航控制器的委托,因此它的方法

- (void)navigationController:(UINavigationController *)navigationController
       didShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated

被调用 - 所以我将以下代码添加到其viewDidLoad

UINavigationController *nc = self.navigationController;
[nc setDelegate:self];

这样可行,但我想知道在Interface Builder中是否也可以设置导航控制器的委托?

我尝试从导航控制器的黄色立方体标志中按住Ctrl键拖动到LoginViewController场景,反之亦然 - 但我只提供了一个弹出窗口来创建一个segue ......

3 个答案:

答案 0 :(得分:10)

至少在Xcode 6中,可以在Interface Builder中完成。

  1. 有一个确认到UINavigationControllerDelegate
  2. 的课程
  3. 在Interface Builder中,从对象库中将对象拖动到导航控制器中(导入到文档大纲或导航控制器中导航控制器上方的工具栏中) enter image description here

  4. 将身份检查器中的对象设置为UINavigationControllerDelegateenter image description here

  5. 从导航控制器对象按住Ctrl键拖动到您的委托对象 enter image description here

  6. 从弹出菜单中选择"委托" enter image description here

  7. 这就是全部。现在您的对象将是导航控制器的委托。

答案 1 :(得分:2)

编辑:截至2015年12月,此答案可能已过时。This answer对于XCode 6及更新版本可能更准确。

很久很久以前,在故事板存在之前,设置代表是可以使用插座(虽然我不记得是否有可能UINavigationController,我只记得我用UITableView做到了)。您只需右键单击导航控制器并从插座拖动到目标:

outlets

然而,根据this answer,它已经不可能了。您可以像{01}一样使用viewDidLoadprepareForSegue:以编程方式执行此操作。

答案 2 :(得分:0)

我对Xcode很新,所以这个解释可能完全错误,而不是你的问题。如果您尝试将视图链接到视图控制器,是否尝试选择视图,然后设置自定义类以在身份检查器下控制它? 同样,我不太明白你的问题,但我想我还是试着提供帮助。