【问题标题】:Change variable of other view controller Swift更改其他视图控制器 Swift 的变量
【发布时间】:2015-04-09 23:48:24
【问题描述】:

我对一个具有表格视图的视图控制器有一个模态segue。

当用户在该表格视图中选择一个单元格时,我希望关闭视图控制器,并在呈现视图控制器中将一个变量更改为所选单元格的内容。

如何以编程方式更改另一个视图控制器中的变量? (不使用 prepareForSegue 方法,因为我不是在做 segue,而是在关闭视图控制器)

【问题讨论】:

  • 如果我理解正确,为什么不尝试委托?

标签: ios swift


【解决方案1】:

这听起来有点奇怪(从表格视图中选择通常会在导航中向前移动),但您可以这样做。只需创建一个名为 CellSelectNotification 之类的协议,它需要一个识别所选单元格的方法(可能需要一个 indexPath,以保持实现简单)。您使父视图控制器符合该协议,并为呈现该表视图的视图控制器提供对其父级的引用作为 CellSelectNotification 委托。当表格视图选择了一个单元格时,您通过您定义的委托方法通知父所选索引路径,然后您允许关闭视图控制器。

这是允许通常不应该相互引用的对象进行通信的一般方式 - 委托模式说“我需要处理一些情况,对于接收者来说处理是delegated - 实现并不重要给调用者”。

您可以通过Key-Value ObservingNSNotification 执行此操作的另一种方式,但在这种情况下,对于您想要的简单通知,最后两个有点重量级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    相关资源
    最近更新 更多