从模式转场访问父视图 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
    }
}

但这行不通。

这里NewsControllerNewsDetailController之间有亲子关系吗?

如果是这样,为什么我的方法不起作用?

如果没有,我将如何处理?

您应该在 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 成功了。