准备转入导航控制器

Posted

技术标签:

【中文标题】准备转入导航控制器【英文标题】:Prepare for segue to a navigation controller 【发布时间】:2015-10-16 21:59:31 【问题描述】:

我在准备对控制第二个表视图控制器导航栏的导航控制器进行 segue 时遇到了麻烦。

无论如何,我需要将一个数组传输到下一个表视图控制器,这是我用来执行此操作的代码(此代码出现在第一个表视图控制器上):

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 
        if (segue.identifier == "Load View") 
            // pass data to next view
            let indexpath: NSIndexPath = self.tableView.indexPathForSelectedRow!
            let DestinationViewController = segue.destinationViewController as! AnswerTableViewController
            var ArrayofArrayswithAnswerElementsTwo : [Answer]
            var ArrayofArrayswithAnswerElements = levelsArray.map(  $0.AnswersArray )
            ArrayofArrayswithAnswerElementsTwo = ArrayofArrayswithAnswerElements[indexpath.row]
            DestinationViewController.ArrayofArrayswithAnswerElements = ArrayofArrayswithAnswerElementsTwo
        
    

当我点击一个单元格时,我在这一行收到 SIGABRT 错误:

let DestinationViewController = segue.destinationViewController as! AnswerTableViewController

我知道为什么会这样(因为我所做的演员是表格视图而不是导航控制器) 如何在保留导航栏的同时将数据传输到第二个表格视图。 非常感谢您的帮助。

【问题讨论】:

您从一个导航控制器推送到另一个导航控制器的任何原因?似乎不需要第二个导航控制器 原因是我试图让我的取消按钮正常工作 【参考方案1】:

删除第二个导航控制器,您的代码看起来不错。 segue应该是从“Your Lists”到“Content”的push segue,如果你push,它不需要另一个导航控制器,但bar仍然会显示。导航栏将沿导航堆栈向下层叠。

更多信息:

UINavigationController Apple Doc and Example

Ray Wenderlich Storyboard and Nav Controller Tutorial

【讨论】:

【参考方案2】:

试试这个

let NavigationController = segue.destinationViewController as! UINavigationController
let DestinationViewController = NavigationController.topViewController as! AnswerTableViewController
// ...
DestinationViewController.ArrayofArrayswithAnswerElements = ArrayofArrayswithAnswerElementsTwo

【讨论】:

以上是关于准备转入导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

在每个选项卡错误处使用导航控制器从视图控制器转换到选项卡栏控制器

在 UISearchController 中按取消后导航栏被阻止

Vuex——阶段总结

TabBarViewController 的导航栏覆盖来自导航控制器的导航栏

为啥我无法编辑嵌入了导航控制器的导航栏?

停止从导航控制器快速导航