Ios 在MasterView的DetailView中触发popover
我不熟悉iOS编程(使用Swift学习),最近对Master-Detail应用程序产生了兴趣,因为我正在学习的这本书的当前章节也是关于它的 我注意到我的书似乎有点太旧了,因为Xcode的Master Detail应用程序模板引入了拆分视图控制器,而书中的模板仍然使用导航控制器作为初始视图控制器: (来自Xcode的模板) (书中的模板) 我想做的是在主视图控制器的工具栏中放置一个“+”按钮,然后触发局部视图控制器内另一个ViewController的全屏弹出窗口。将contacts应用程序作为参考,如果您在iPad或iPhone Plus上以横向模式运行它,则会发生这种情况: (联系人应用程序中的示例) 在本书的示例中,只在工具栏中添加了“+”,并在新的视图控制器中添加了一个序列,但使用Xcode的新模板并不容易。如何在详细视图中创建这样一个弹出窗口,但它是由主视图中的按钮启动的Ios 在MasterView的DetailView中触发popover,ios,xcode,swift,segue,uisplitviewcontroller,Ios,Xcode,Swift,Segue,Uisplitviewcontroller,我不熟悉iOS编程(使用Swift学习),最近对Master-Detail应用程序产生了兴趣,因为我正在学习的这本书的当前章节也是关于它的 我注意到我的书似乎有点太旧了,因为Xcode的Master Detail应用程序模板引入了拆分视图控制器,而书中的模板仍然使用导航控制器作为初始视图控制器: (来自Xcode的模板) (书中的模板) 我想做的是在主视图控制器的工具栏中放置一个“+”按钮,然后触发局部视图控制器内另一个ViewController的全屏弹出窗口。将contacts应用程序作为
谢谢从默认MD模板开始:
- 从
的MasterViewController
中删除viewDidLoad
代码addButton
- 在情节提要中为主控创建一个添加按钮,并将其链接到
操作MasterViewController
- 创建一个从细节控制器到要用作覆盖的序列,并为其命名
- 在细节控制器中创建执行该步骤的方法
- 在主操作中,调用detail方法来触发segue
如果您想要显示的动画样式,您需要做额外的工作,但这将为您提供基本的控制器连接。谢谢!如何从主视图控制器调用该方法?我知道您必须引用详细视图控制器,但我不知道主控制器如何具有该引用(称为
detailViewController
)。查看更新后的答案,了解操作方法可能是什么样子。我想我找到了一个更好的方法:如果您改为创建一个从UISplitView到新视图的segue,并使用self.splitViewController?在主视图内触发它。performsgueWithIdentifier(id,sender:sender)
,视图会根据需要显示,根据您是处于纵向模式还是横向模式,就像默认的showdeail
segue一样。你的方法只适用于横向模式,但无论如何,谢谢你,你引导我进入了正确的方向!
func displayOverlay() {
print("perform a segue here to the required controller")
self.performSegueWithIdentifier("overlay", sender: self)
}
@IBAction func detailAdd(sender: AnyObject) {
if let dvc : DetailViewController = detailViewController {
dvc.displayOverlay()
} else {
print("Oops...no detail controller")
}
}