gpt4 book ai didi

ios - 将核心数据对象从 DetailViewController 传递到另一个 View Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:29:14 24 4
gpt4 key购买 nike

有没有办法将核心数据对象从 DetailViewController 传递到另一个 View Controller 以允许编辑?

从 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


}

}

但是我在我的对象上得到了零

编辑

编辑项在EditViewController上是这样设置的:

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

self.configureView()
}
}

并且 detailItem 在 DetailViewController 中设置如下:

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

最佳答案

不要使用编辑 Controller 的属性,而是使用从 segue 中获得的属性。

即(假设您直接移动到您的 EditViewController):替换...

let controller =  editViewController

...类似...

let controller = segue.destinationViewController as! EditViewController

...除非您可能应该测试它而不是使用 as!

===

更新我对这是怎么发生的猜测。 (见评论。)

您必须在代码中某处创建了 editViewController 指向的任何内容,这意味着它与作为 segue 机制的一部分为您创建的实例/对象不同。换句话说,您有两个不同的 EditViewController 对象,并且您没有将数据传递给将要在屏幕上显示 View 的对象。

关于ios - 将核心数据对象从 DetailViewController 传递到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com