第二个主从方案未在 SplitViewController 中正确加载
Second Master-Detail Scheme Does Not Load Correctly in SplitViewController
我在基本上是 Swift 标准代码的拆分视图控制器中设置了主从应用程序。使用初始主从方案,它按预期工作。
我想在拆分视图控制器的左右窗格中加载第二个主控及其第二个细节。除了一个主要例外,它按预期工作。例外情况是第二个详细视图仅覆盖左窗格中的第二个母版。第二个详细信息未加载到右窗格中。
这是图形化的问题。第一个主从方案:
然后启动第二个master时:
然后当在第二主控中点击一个单元格时:
我使用一个简单的故事板 segue 从 MVC1 按钮加载第二个主控,尽管我已经作为委托以编程方式完成了它。在左侧显示 master 2 并在右侧显示 detail 2 没有任何效果。在所有情况下,我都尝试将 segue 作为 Show 和 Show Detail。我无法辨别应用程序行为的差异。
对于从 MVC2 到 DVC2 的转换:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showKeywordDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as! Keyword
let controller = segue.destinationViewController as! KeywordDetailViewController
controller.detailItem = object
//controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = false
controller.sentBy = "showKeywordDetail"
}//if let indexPath
} else if segue.identifier == "addKeyword" {
//为其他情况打包更多代码
}
如有任何指导,我们将不胜感激。
这个解决方案的关键似乎是创建一个单独的 "non-connected" 主细节方案。
在原来的母版上,放置一个带有动作的按钮:
@IBAction func doCodeKeywordPush(sender : AnyObject) {
self.navigationController!.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("KeywordTableViewController") as! UITableViewController, animated: true)
}//doCodeKeywordPush
然后将第二个主从方案设为故事板中的独立集。在导航控制器中嵌入第二个主视图控制器。创建从第二个主 tableViewCell 到第二个详细视图控制器的 segue。按钮和第二组之间不应有转场或连接。
最后,像任何其他设置一样,将第二个主节点配置为第二个细节转场。
我在基本上是 Swift 标准代码的拆分视图控制器中设置了主从应用程序。使用初始主从方案,它按预期工作。
我想在拆分视图控制器的左右窗格中加载第二个主控及其第二个细节。除了一个主要例外,它按预期工作。例外情况是第二个详细视图仅覆盖左窗格中的第二个母版。第二个详细信息未加载到右窗格中。
这是图形化的问题。第一个主从方案:
然后启动第二个master时:
然后当在第二主控中点击一个单元格时:
我使用一个简单的故事板 segue 从 MVC1 按钮加载第二个主控,尽管我已经作为委托以编程方式完成了它。在左侧显示 master 2 并在右侧显示 detail 2 没有任何效果。在所有情况下,我都尝试将 segue 作为 Show 和 Show Detail。我无法辨别应用程序行为的差异。
对于从 MVC2 到 DVC2 的转换:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showKeywordDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as! Keyword
let controller = segue.destinationViewController as! KeywordDetailViewController
controller.detailItem = object
//controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = false
controller.sentBy = "showKeywordDetail"
}//if let indexPath
} else if segue.identifier == "addKeyword" {
//为其他情况打包更多代码
}
如有任何指导,我们将不胜感激。
这个解决方案的关键似乎是创建一个单独的 "non-connected" 主细节方案。
在原来的母版上,放置一个带有动作的按钮:
@IBAction func doCodeKeywordPush(sender : AnyObject) {
self.navigationController!.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("KeywordTableViewController") as! UITableViewController, animated: true)
}//doCodeKeywordPush
然后将第二个主从方案设为故事板中的独立集。在导航控制器中嵌入第二个主视图控制器。创建从第二个主 tableViewCell 到第二个详细视图控制器的 segue。按钮和第二组之间不应有转场或连接。
最后,像任何其他设置一样,将第二个主节点配置为第二个细节转场。