我是 iOS 编程的新手(学习 Swift),最近对 Master Detail Applications 感兴趣,因为我正在学习的书的当前章节也是关于它的。
我注意到我的书似乎有点太旧了,因为 Xcode 的 Master Detail Apps 模板引入了一个 Split View Controller,而书中的模板仍然只使用 Navigation Controller 作为初始 ViewController:
我想做的是在 Master View Controller 的工具栏中放置一个“+”按钮,然后触发 Detail View Controller 中另一个 ViewController 的全屏弹出。请参阅联系人应用程序作为引用,如果您在 iPad 或 iPhone Plus 上横向运行它,就会发生这种情况:
在书中的示例中,只是将“+”添加到工具栏,并从它添加了一个 segue 到新的 View Controller,但使用 Xcode 的新模板就没那么容易了。如何在详细信息 View 中制作这样一个弹出窗口,但由主视图中的按钮启动?
谢谢
最佳答案
从默认的 MD 模板开始:
从
MasterViewController
的viewDidLoad
中移除addButton
代码。在 Storyboard中为母版创建一个添加按钮,并将其链接到
MasterViewController
操作。从您的细节 Controller 到您想要用作叠加层的 Controller 创建一个 segue,并为其命名。
在执行该 segue 的细节 Controller 中创建一个方法。
例如:
func displayOverlay() {
print("perform a segue here to the required controller")
self.performSegueWithIdentifier("overlay", sender: self)
}
- 在master action中,调用detail方法触发segue。
例如:
@IBAction func detailAdd(sender: AnyObject) {
if let dvc : DetailViewController = detailViewController {
dvc.displayOverlay()
} else {
print("Oops...no detail controller")
}
}
如果您想要显示的动画样式,您将不得不做额外的工作,但这应该让您获得基本的 Controller 连接。
关于ios - 从 MasterView 触发 DetailView 中的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252300/