繁体   English   中英

消除模态时刷新数据

[英]Refreshing Data when dismissing Modal

我引用了一个称为selectedItem的托管对象,将数据加载到视图控制器中,并在另一个视图中使用了模式搜索(在当前上下文中)来编辑selectedItemtitle属性

我希望在关闭模态视图时使用textLabel刷新数据,但事实并非如此。 我使用了相同的方法将数据添加到表数据中,并且可以正常工作,因为我使用tableView.reloadData但是如何使用模态segue刷新标签数据呢? 或基本上将标签更改为新值。

detailsViewController

var selectedItem: Item!

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)
    self.tableView.reloadData()

    titleLabel.text = selectedItem.title

}

override func viewDidLoad() {
    super.viewDidLoad()

    titleLabel.text = selectedItem.title
}

EditViewController

@IBAction func save(sender: AnyObject) {

selectedItem.title = editTitle.text

    var error: NSError?
    if context!.save(nil){}
    context?.save(&error)


self.presentingViewController?.viewWillAppear(true)
self.dismissViewControllerAnimated(true, completion: {});

}

PS:我试图通过使用另一种方法来返回第一个视图来进行变通,但是崩溃了,有人知道为什么吗?

您可以使用NSNotification,它们对于此类事情非常方便,这是一些通用用法的示例:

父视图控制器

在viewDidLoad中:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "udpateObject:", name: "udpateObject", object: nil)

在deinit中:

NSNotificationCenter.defaultCenter().removeObserver(self, name: "udpateObject", object: nil)

然后,您将创建一个与观察者的选择器匹配的函子:

func udpateObject(notification: NSNotification) {

// here you'll get the object you update in a different view

    if let receivedObject = notification.object as? YOUR_OBJECT_DATA_TYPE {

        self.ThisInstanceVariable = receivedObject
        // Update any UI elements
    }
}

更新视图控制器

无论您在哪里更新数据:

NSNotificationCenter.defaultCenter().postNotificationName("udpateObject", object: YOUR_UPDATED_OBJECT)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM