从第三个容器更新UITableView

时间:2019-06-19 00:52:42

标签: ios swift xcode uitableview

我有这样的构造:

具有段控制的容器编号1(FirstViewContainer) 包含:

第2个容器(FoodViewContainer)和另一个细分控件 包含:

带有UITableView的3号容器(MyFoodContainer)

我需要从1号集装箱中点击更新UITableView

我的代码:

容器1的操作代码:

  @IBAction func nextButton(_ sender: UIBarButtonItem) {
    print("clicked")
    var myClass : FoodViewController = self.children[1] as! FoodViewController

    myClass.relodDatabase()

容器2的功能代码:

func relodDatabase()
{
    print("data reloaded")
    var myClass : MyFoodContainer = self.children[1] as! MyFoodContainer

    myClass.myFoodTable.reloadData()
    if myClass.foodList.count == 0 {
        myClass.myFoodTable.setEmptyView(title: "You don't have any food.", message: "Your food will be in here after adding.")
    }

    else {
        myClass.myFoodTable.restore()
    }

    myClass.viewWillAppear(true)

    var secondClass: CustomFoodContainer = self.children[2] as! CustomFoodContainer

    secondClass.foodList = TrackerDatabase.instance.getFoood(dname: dayTable)
    secondClass.viewWillAppear(true)
}

问题是当我尝试重新加载东西时没有人发生。 但是,print(“ data reloaded”执行正确。

有趣的是,我可以从2个容器(一个父级,一个子级)重新加载表视图。 我不能通过parent> child> child's child

您知道我该怎么做吗?也许绕过了?

我添加了一张图片:

该表应重新加载,该表位于3号容器上。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以为其使用协议或通知中心。如果我是你,我会选择协议。您可以添加从协议生成的委托,并将其用于在第一个容器中重新加载tableview。