从MasterView触发DetailView中的popover

时间:2016-05-16 10:58:20

标签: ios xcode swift segue uisplitviewcontroller

我是iOS编程的新手(使用Swift学习),最近对Master Detail Applications感兴趣,因为我学习的这本书的当前章节也是关于它的。

我注意到我的书似乎有点太旧了,因为Xcode的Master Detail Apps模板引入了分割视图控制器,而书中的模板仍然只使用导航控制器作为初始ViewController:

Template from Xcode (来自Xcode的模板) Template from the book (书中的模板)

我想做的是放置一个" +"主视图控制器工具栏中的按钮,然后触发详细视图控制器内另一个ViewController的全屏弹出窗口。请参阅联系人应用程序作为参考,如果您在iPad或iPhone Plus上横向运行,则会发生这种情况:

Example from contacts app (来自联系人应用程序的示例)

在本书的例子中,只有" +"已添加到工具栏中,并从中添加了一个segue到新的View Controller,但使用Xcode的新模板并不容易。如何在详细视图中制作这样的弹出框,但是在主视图中按钮启动?

由于

1 个答案:

答案 0 :(得分:1)

从默认的MD模板开始:

  • addButton的{​​{1}}移除MasterViewController代码。

  • 在情节提要中为主人创建一个添加按钮,并将其链接到viewDidLoad操作。

  • 从您的详细控制器创建一个segue到您要用作叠加层的segue,并为其命名。

  • 在详细控制器中创建执行该segue的方法。

E.g:

MasterViewController
  • 在主操作中,调用detail方法以触发segue。

E.g:

func displayOverlay() {
    print("perform a segue here to the required controller")
    self.performSegueWithIdentifier("overlay", sender: self)
}

如果您想要显示的动画样式,则需要做额外的工作,但这应该可以获得基本的控制器连接。