【问题标题】:How to pass data from a TableViewCell to a ContainerView?如何将数据从 TableViewCell 传递到 ContainerView?
【发布时间】:2019-05-28 07:25:57
【问题描述】:

我是使用 Swift 的新手,需要帮助将数据从 TableViewCell 传递到 ContainerView 以更改标签的某些文本。

我目前的状态是将数据从 TabelViewCell 传递到 ViewController 以将 Label (IBOutlet) 的文本更改为带有 segue 的第二个 ViewController。

但我不知道如何使用自己的 ViewController 将数据从 Cell 传递到 ContainerView。

这是我项目的图片

在这里你可以找到我的项目和问题的图片

我只想将数据从“View_1”的 TableViewCell 传递到“View_2”,并更改 ContainerView (UIView) 的 ViewController“View_In_Container”中标签“Change_Text_1”的文本。

也许你们可以帮助我解决我的问题。谢谢你。

【问题讨论】:

  • 不要从 view(单元格)传递数据,始终从 model(数据源数组)传递数据。请使用 lowerCamelCased 变量名而不是 Upper_Snake_Cased
  • @vadian 下次会做得更好:)

标签: ios swift xcode


【解决方案1】:

当您在 View_2 中添加 ContainerView 时,故事板中将添加子视图控制器 (View_in_container) 和 segue 到子视图控制器。将identifier 添加到segue 并从View_2 prepareForSegue 方法传递数据。在加载 View_2 时执行从 View_2View_in_container 的 segue

class View1: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "toView2", let view2 = segue.destination as? View2 {
            view2.name = "name"//Pass data from tableview data source array
        }
    }
}
class View2: UIViewController {
    var name:String?
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "toChildVC", let viewInContainer = segue.destination as? ViewInContainer {
            viewInContainer.name = self.name
        }
    }
}
class ViewInContainer: UIViewController {
    var name:String?
    override func viewDidLoad() {
        super.viewDidLoad()
        label1.text = name
    }
}

选择从View_2View_in_container的segue并添加标识符toChildVC

【讨论】:

  • 非常感谢。它完全适用于您的解决方案。
【解决方案2】:

如果您要使用 segue 到其他视图控制器,您可以在那里传递数据,首先向 segue 添加一个标识符,然后在prepare(for segue:... 中您将可以访问segue.destination as? View_2,然后对容器执行相同操作并传递值

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2017-11-30
    相关资源
    最近更新 更多