我有UISplitViewController
,其中包含以下设置:
MasterTableViewController - > UINavigationController -> CustomViewController -> Container -> CustomTableViewController
我可以通过这样的segue将数据从MasterTableViewController
发送到CustomViewController
:
if segue.identifier == "showCustomView" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let section = self.survey[indexPath.row]
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! CustomViewController
controller.detailItem = section
if let work = workItem{
controller.workItem = work
}
}
}
我不知道如何将相同的数据发送到CustomTableViewController
,可以从MasterViewController
完成,还是首先获取数据,然后通过我的数据发送CustomViewController
此处的最终目标是NSManagedObject
到CustomTableViewController
答案 0 :(得分:0)
您的CustomViewController
负责将该数据转发到其视图,从而转发给容器中嵌入视图的ViewControllers。为此,您可能需要向CustomViewController
添加新的“setter”,并在代码片段中添加CustomViewController
而不是UINavigationController
并传递该值。然后,此setter应将数据转发到子视图控制器和/或在viewDidLoad
内传递它。请注意,在使用故事板时,无法完全控制是先调用setter还是先调用viewDidLoad
。因此,在两种方法中进行适当的nil检查并实现设置子视图控制器的属性。
答案 1 :(得分:0)
我通过使用我在故事板中设置的嵌入segue标识符来完成工作,该标识符链接了container
和CustomTableViewController
:
这是CustomViewController
override func prepareForSegue(segue: UIStoryboardSegue,
sender: AnyObject?) {
if segue.identifier == "embedSegueIdentifier"{
if let vc = segue.destinationViewController as? CustomTableViewController
{
self.embeddedViewController = vc
self.embeddedViewController.workItem = work
}
}
}