簡體   English   中英

在swift2上管理頁面導航

[英]managing page navigation at swift2

我正在嘗試在不使用“導航控制器”的情況下學習頁面導航。
創建了一個按鈕,功能類似於;

@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).

我該如何解決這個問題?

您可以使用可選綁定進行測試:

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)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM