【问题标题】:Is it possible to ctrl-drag in Storyboard to set a UINavigationControllerDelegate?是否可以在 Storyboard 中按住 ctrl-drag 来设置 UINavigationControllerDelegate?
【发布时间】:2014-02-01 17:36:40
【问题描述】:

在 Xcode 5.0.2 中,我创建了 an app for iPhone,带有一个导航控制器和 3 个其他视图控制器(此处为 fullscreen):

我希望LoginViewController(在上面的屏幕截图中带有“登录”标题)作为导航控制器的委托,以便它的方法

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

被调用 - 所以我在其viewDidLoad 中添加了以下代码:

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

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

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

【问题讨论】:

    标签: xcode xcode5


    【解决方案1】:

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

    1. 有一个确认UINavigationControllerDelegate的类
    2. 在 Interface Builder 中,从对象库中将 Object 拖到导航控制器中(拖到文档大纲或故事板中导航控制器上方的工具栏)

    3. 在身份检查器中将对象的 Class 设置为您的 UINavigationControllerDelegate

    4. 按住 Ctrl 键从 Navigation Controller 对象拖动到您的委托对象

    5. 从弹出菜单中选择“委托”

    就是这样。现在您的对象将成为 Navigation Controller 的委托。

    【讨论】:

      【解决方案2】:

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

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

      但是,根据this answer,这已经不可能了。您可以像以前一样在viewDidLoad 中以编程方式执行此操作,也可以使用prepareForSegue:

      【讨论】:

      • 我认为这个答案并不准确。请参阅下面的答案。
      【解决方案3】:

      我对 Xcode 很陌生,所以这个解释可能完全错误,根本不是你的问题。如果您尝试将视图链接到视图控制器,您是否尝试过选择视图然后设置自定义类以在身份检查器下控制它? 再说一次,我不太明白你的问题,但我想我还是会尽力帮忙的。

      【讨论】:

        猜你喜欢
        • 2016-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        相关资源
        最近更新 更多