DetailViewControllerから別のView ControllerにCore Dataオブジェクトを渡して編集できる方法はありますか? MasterViewControllerからDetailViewControllerから別のView ControllerにCore Dataオブジェクトを渡す
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
}
}
しかし、私は私のオブジェクト
EDIT
EDIにnilを取得トン項目はEditViewControllerに、このように設定されている:
var editItem: MyValues? {
didSet {
// Update the view.
self.configureView()
}
}
とdetailItemはDetailViewControllerにこのように設定されている:
var detailItem: MyValues? {
didSet {
// Update the view.
self.configureView()
}
}
ありがとうございます。それはトリックを行うようだ。しかし、なぜ私のコードは動作しませんでしたか? –
あなたは 'editViewController'が指し示す何らかの場所でコードを作成していなければなりません。つまり、あなたのために作成されたインスタンス/オブジェクトではありません。言い換えれば、2つの異なるEditViewControllerオブジェクトがあり、画面にビューを配置しようとしていたものにデータを渡していないということです。 –
あなたの答えはありがたいですが、主に説明のためにありがとう!相談する相手の回答にこれを追加するようにリクエストできますか?また、私はそれを(editViewController)私のクラス内のvarとして作成した右です... –