【问题标题】:SplitView in Storyboard, can't connect delegate故事板中的SplitView,无法连接委托
【发布时间】:2012-02-17 00:05:07
【问题描述】:

我在情节提要中定义了一个 iPad 界面,带有一个 SplitViewController。我想将 SplitViewController 的委托设置为指向详细控制器,但 IB 不允许建立该连接。

  • 放置一个“对象”对象并将类更改为我的细节控制器的类会使委托指向与显示的不同的细节控制器实例。
  • 我尝试在应用委托中手动连接它(在 didFinishLaunching 中)没有结果,委托仍然为零。
  • 将代理更改为 AppDelegate 并在那里实现协议有效,但将消息传递给详细控制器不起作用(即使我验证了我引用的是同一个实例)。

没有任何作用。我可以在加载详细视图时设置self.splitViewController.delegate = self,然后它就可以毫无问题地成为委托。但我想念在那之前发生的任何代表电话。

对于上下文,我需要获取 splitviewcontroller 的委托调用,以便我可以在详细视图中显示一个按钮来显示弹出框,这是标准做法。现在,如果应用程序以纵向启动,则必须将其旋转到横向,然后再返回以显示按钮。

我已经用“正常”的 xib 完成了这个,没有问题。这似乎是不允许在情节提要中跨场景连接插座这一更普遍问题的特例。

【问题讨论】:

    标签: delegates uisplitviewcontroller uistoryboard


    【解决方案1】:

    我不知道为什么这一次有效,而不是前 80 次,但我将它添加到了我的 AppDelegate:

    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
    splitViewController.delegate = (id)navigationController.topViewController;
    

    【讨论】:

    • 仅供参考,我在使用最新的 Xcode >6.1 时遇到了同样的问题。我正在使用相同的解决方法来解决看起来像错误的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-08-28
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    相关资源
    最近更新 更多