在swift2管理页面导航

时间:2015-12-09 02:12:18

标签: ios xcode swift

我试图在不使用"导航控制器"的情况下学习页面导航。
创建了一个按钮,功能类似于:

@IBAction func backPressed(sender: AnyObject) {
    self.performSegueWithIdentifier("page2ToMain", sender: self)
}

工作正常 我需要将数据从第2页传递到第3页。因此,在" didSelectRowAtIndexPath"我使用" performSegueWithIdentifier"并覆盖" prepareForSegue"功能如下;

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    self.selectedRow = self.dataArray[indexPath.row]

    self.performSegueWithIdentifier("page2ToPage3", sender: self)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let nextViewController = segue.destinationViewController as! ViewController3
    nextViewController.data = self.selectedRow
    print(self.selectedRow)

}

当我单击表格单元格时,它运行良好,跳转到其他视图控制器,我看到数据变量。
但当我按下后退按钮时,它会失败;

 Could not cast value of type 'test3.ViewControllerMain' (0x1045469f0) to 'test3.ViewController3' (0x1045466e0).

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可以使用可选绑定对此进行测试:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let nextViewController = segue.destinationViewController as? ViewController3 {
        nextViewController.data = self.selectedRow
        print(self.selectedRow)
    }
}

或者查看segue identifier然后测试:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "page2ToPage3" {
        let nextViewController = segue.destinationViewController as! ViewController3
        nextViewController.data = self.selectedRow
        print(self.selectedRow)
    }
}