ViewController 将结果返回给调用它的 ViewController [重复]
Posted
技术标签:
【中文标题】ViewController 将结果返回给调用它的 ViewController [重复]【英文标题】:ViewController return results to the ViewController which calls it [duplicate] 【发布时间】:2018-06-01 13:03:07 【问题描述】:我想从 ViewController-A
打开新的 ViewController-B然后在关闭 ViewController-B 之后它返回 Some Value (Result) 到 ViewController-A
是否可以不使用通知?
如果是,那么如何?
【问题讨论】:
使用委托或展开segue 检查这个:useyourloaf.com/blog/… 您的控制器是否嵌入在 UINavigationController 中? 是 ViewController-A 嵌入式 UINavigationController 这个问题已经被问了很多很多次了 【参考方案1】:更“干净”的方式是使用委托模式。 实现此模式的步骤:
在你的 ViewController-B 中声明协议,例如:
protocol ViewControllerAUpdatingProtocol: class
func update(withSomeValue someValue: SomeValueType)
将其设为仅类,因为我们知道 ViewController-A 类对象将符合它。
将“delegate”属性添加到您的 ViewController-B:
weak var delegate: ViewControllerAUpdatingProtocol!
如果 ViewController-A 不一定要更新,您可以将此属性设为可选:
weak var delegate: ViewControllerAUpdatingProtocol?
现在从关闭 ViewController-B 的位置调用委托的“更新”方法。
delegate.update(withSomeValue: yourValue)
然后使 ViewController-A 符合协议 ViewControllerAUpdatingProtocol:
extension ViewControllerA: ViewControllerAUpdatingProtocol
func update(withSomeValue someValue: SomeValueType)
// your implementation goes here
初始化 ViewController-B 的“delegate”属性 视图控制器-A:
viewControllerBInstance.delegate = self
【讨论】:
以上是关于ViewController 将结果返回给调用它的 ViewController [重复]的主要内容,如果未能解决你的问题,请参考以下文章