有沒有辦法將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()
}
}
謝謝。這似乎是訣竅。然而,爲什麼我的代碼沒有工作? –
您必須創建任何'editViewController'指向代碼的地方,這意味着它不是作爲segue機制的一部分爲您創建的實例/對象。換句話說,你有兩個不同的'EditViewController'對象,並且你沒有將數據傳遞給將要在屏幕上顯示視圖的數據。 –
謝謝你的回答,但主要是爲了解釋!我是否可以要求將其添加到您的答案以供其他人諮詢?你也是對的我有它(editViewController)作爲一個var創建在我的課堂內... –