我有一个TableViewController,让我们称之为A,它在另一个视图控制器B的容器视图中。当B中的值发生更改时,我需要A重新加载其数据。我还需要它从B中获取此更改后的值。想法?
最佳答案
您是否考虑过使用通知?
因此,在B中-我会做类似的事情:
// ViewControllerB.swift
import UIKit
static let BChangedNotification = "ViewControllerBChanged"
class ViewControllerB: UIViewController {
//... truncated
func valueChanged(sender: AnyObject) {
let changedValue = ...
NSNotificationCenter.defaultCenter().postNotificationName(
BChangedNotification, object: changedValue)
}
//... truncated
}
接下来是A,看起来像这样-其中
ValueType
只是您提到的值的类型:import UIKit
class ViewControllerA: UITableViewController {
//... truncated
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//...truncated
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "onBChangedNotification:",
name: BChangedNotification,
object: nil)
}
//... truncated
func onBChangedNotification(notification: NSNotification) {
if let newValue = notification.object as? ValueType {
//...truncated (do something with newValue)
self.reloadData()
}
}
}
最后–不要忘记在A的
deinit
方法中使用remove the observer:import UIKit
class ViewControllerA: UITableViewController {
//... truncated
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
//... truncated
}
关于ios - 从父级重新加载TableViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32161119/