从模式转场访问父视图 Swift
Accessing parent view from modal segue Swift
我有一个 View Controller - NewsController
它有一个模式转场到 NewsDetailController
在 NewsDetailController
中,我正在尝试 运行 以下功能:
@IBAction func greenLikeClick(sender: AnyObject) {
if let parentVC = self.parentViewController as? NewsController {
parentVC.newslists[loadsection][loadrow].liked = false
}
}
但这行不通。
这里NewsController
和NewsDetailController
之间有亲子关系吗?
如果是这样,为什么我的方法不起作用?
如果没有,我将如何处理?
您应该在 NewsDetailController
中使用 self.presentingViewController
以获得 NewsController
。来自文档:
When you present a view controller modally (either explicitly or implicitly) using the presentViewController:animated:completion: method, the view controller that was presented has this property set to the view controller that presented it.
当我的 segue 被推送时,我是这样做的:
if let presenter = self.navigationController?.viewControllers[0] as? MainViewController {
// access presenters members
}
当我的 segue 出现时像这样:
if let presenter = self.presentingViewController?.children[0] as? MainViewController {
// access presenters members
}
如果您有多个子项或视图控制器索引,您应该对其进行管理。我是单身所以 0 成功了。
我有一个 View Controller - NewsController
它有一个模式转场到 NewsDetailController
在 NewsDetailController
中,我正在尝试 运行 以下功能:
@IBAction func greenLikeClick(sender: AnyObject) {
if let parentVC = self.parentViewController as? NewsController {
parentVC.newslists[loadsection][loadrow].liked = false
}
}
但这行不通。
这里NewsController
和NewsDetailController
之间有亲子关系吗?
如果是这样,为什么我的方法不起作用?
如果没有,我将如何处理?
您应该在 NewsDetailController
中使用 self.presentingViewController
以获得 NewsController
。来自文档:
When you present a view controller modally (either explicitly or implicitly) using the presentViewController:animated:completion: method, the view controller that was presented has this property set to the view controller that presented it.
当我的 segue 被推送时,我是这样做的:
if let presenter = self.navigationController?.viewControllers[0] as? MainViewController {
// access presenters members
}
当我的 segue 出现时像这样:
if let presenter = self.presentingViewController?.children[0] as? MainViewController {
// access presenters members
}
如果您有多个子项或视图控制器索引,您应该对其进行管理。我是单身所以 0 成功了。