从 MasterView 触发 DetailView 中的弹出窗口
Trigger popover in DetailView from MasterView
我是 iOS 编程的新手(通过 Swift 学习)并且最近对 Master Detail Applications 感兴趣,因为我正在学习的书的当前章节就是关于它的,也是。
我注意到我的书似乎有点太旧了,因为 Xcode 的 Master Detail Apps 模板引入了 Split View Controller,而书中的模板仍然只使用 Navigation Controller 作为初始 ViewController:
(模板来自 Xcode)
(书中的模板)
我想做的是在主视图控制器的工具栏中放置一个“+”按钮,然后在详细视图控制器内触发另一个 ViewController 的全屏弹出窗口。请参阅联系人应用程序作为参考,如果您 运行 在 iPad 或 iPhone 上横向显示,则会发生这种情况加号:
(联系人应用程序中的示例)
在书中的示例中,只是将“+”添加到工具栏,并从中添加了一个 segue 到新的 View Controller,但使用 Xcode 的新视图控制器并不容易模板。我怎样才能在详细信息视图中制作这样一个弹出窗口,但是由主视图中的按钮启动的?
谢谢
从默认 MD 模板开始:
从 MasterViewController
的 viewDidLoad
中删除 addButton
代码。
在情节提要中为母版创建一个添加按钮,然后link将其添加到MasterViewController
操作。
从您的细节控制器创建一个 segue 到您想要用作叠加层的控制器并为其命名。
在执行该 segue 的细节控制器中创建一个方法。
例如:
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")
}
}
如果您想要显示的动画样式,您将需要做额外的工作,但这应该让您获得基本的控制器连接。
我是 iOS 编程的新手(通过 Swift 学习)并且最近对 Master Detail Applications 感兴趣,因为我正在学习的书的当前章节就是关于它的,也是。
我注意到我的书似乎有点太旧了,因为 Xcode 的 Master Detail Apps 模板引入了 Split View Controller,而书中的模板仍然只使用 Navigation Controller 作为初始 ViewController:
我想做的是在主视图控制器的工具栏中放置一个“+”按钮,然后在详细视图控制器内触发另一个 ViewController 的全屏弹出窗口。请参阅联系人应用程序作为参考,如果您 运行 在 iPad 或 iPhone 上横向显示,则会发生这种情况加号:
在书中的示例中,只是将“+”添加到工具栏,并从中添加了一个 segue 到新的 View Controller,但使用 Xcode 的新视图控制器并不容易模板。我怎样才能在详细信息视图中制作这样一个弹出窗口,但是由主视图中的按钮启动的?
谢谢
从默认 MD 模板开始:
从
MasterViewController
的viewDidLoad
中删除addButton
代码。在情节提要中为母版创建一个添加按钮,然后link将其添加到
MasterViewController
操作。从您的细节控制器创建一个 segue 到您想要用作叠加层的控制器并为其命名。
在执行该 segue 的细节控制器中创建一个方法。
例如:
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")
}
}
如果您想要显示的动画样式,您将需要做额外的工作,但这应该让您获得基本的控制器连接。