准备segue到导航控制器

时间:2015-10-16 21:59:32

标签: ios swift uitableview uinavigationcontroller segue

我正在为准备控制第二个表视图控制器导航栏的导航控制器的segue而遇到麻烦。 This is the storyboard

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

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

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

2 个答案:

答案 0 :(得分:2)

删除第二个导航控制器,您的代码看起来很好。 segue应该是从“你的列表”到“内容”的推送,如果你推,它将不需要另一个导航控制器,但该栏仍将显示。导航栏将沿着导航堆栈级联。

更多信息:

UINavigationController Apple Doc and Example

Ray Wenderlich Storyboard and Nav Controller Tutorial

答案 1 :(得分:1)

试试这个

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