ios - 关闭模态时刷新数据

标签 ios swift core-data segue

我有一个名为 selectedItem 的托管对象的引用,我将数据加载到 View Controller 上,并有一个模式转场(在当前上下文中)到另一个 View 以编辑 title 属性selectedItem

我希望 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
}

编辑 View Controller

@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:我试图通过使用另一个 segue 返回到第一个 View 来解决这个问题,但是它崩溃了,有人知道为什么吗?

最佳答案

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

父 View Controller

在viewDidLoad中:

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

在初始化中:

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
    }
}

更新 View Controller

无论您在何处更新数据:

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

关于ios - 关闭模态时刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31688712/

相关文章:

ios - 在 Swift 中解码 JSON Web token

ios - 删除外部存储实体的核心数据不会释放 iCloud 中的空间

ios - 不能将 "Object"或 "Objects"用作 Core Data 中的实体?

ios - 使用phonegap时出现Xcode错误

ios - 无法在代码中调用 segue (Swift)

ios - 布局问题 Xcode - 搜索栏自动移动

swift - PromiseKit 在链接之前解包可选

ios - NSFetchRequest 挂起

ios - 如何在 iOS Meteor 应用程序的 native 浏览器中获取要打开的链接?

ios - 如何在调用 APNS API 时向 APNS 发送推送证书?