2016-08-19 107 views
2

有沒有辦法將Core Data對象從DetailViewController傳遞到另一個View Controller以允許編輯?從DetailViewController傳遞核心數據對象到另一個視圖控制器

從MasterViewController導航到DetailViewController:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showDetail" { 
      if let indexPath = self.tableView.indexPathForSelectedRow { 
       let myValue = myValues[indexPath.row] 
       let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController 
       controller.detailItem = myValue 
       controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() 
       controller.navigationItem.leftItemsSupplementBackButton = true 
      } 
     } 
    } 

然後從DetailViewController到EditViewController:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showEdit" { 

      let controller = editViewController 
      controller.editItem = detailItem 
      controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() 
      controller.navigationItem.leftItemsSupplementBackButton = true 


     } 

    } 

,但我得到我的對象

編輯

在EDI上零牛逼項目設置這樣的EditViewController:

var editItem: MyValues? { 
     didSet { 
      // Update the view. 

      self.configureView() 
     } 
    } 

和detailItem在DetailViewController這樣設置:

var detailItem: MyValues? { 
     didSet { 
      // Update the view. 
      self.configureView() 
     } 
    } 

回答

2

而不是使用屬性編輯器,請使用您從SEGUE得到什麼。

I.e. (假設你直接移動到你的EditViewController):替換...

let controller = editViewController 

...喜歡的東西......

let controller = segue.destinationViewController as! EditViewController 

...除非你也許應該測試它,而不是使用as!

===

與我有關如何走過來的猜測更新。 (見評論)

您必須創建任何editViewController指向代碼的地方,這意味着它不是作爲segue機制的一部分爲您創建的實例/對象。換句話說,您有兩個不同的EditViewController對象,並且您沒有將數據傳遞給將要在屏幕上顯示視圖的數據。

+0

謝謝。這似乎是訣竅。然而,爲什麼我的代碼沒有工作? –

+0

您必須創建任何'editViewController'指向代碼的地方,這意味着它不是作爲segue機制的一部分爲您創建的實例/對象。換句話說,你有兩個不同的'EditViewController'對象,並且你沒有將數據傳遞給將要在屏幕上顯示視圖的數據。 –

+0

謝謝你的回答,但主要是爲了解釋!我是否可以要求將其添加到您的答案以供其他人諮詢?你也是對的我有它(editViewController)作爲一個var創建在我的課堂內... –

相關問題