使用分段控件切换*和刷新*子视图

Use segmented control to switch *and refresh* subviews

我正在使用分段控件来补充选项卡控制器并在该部分中添加额外的选项。

分段控件在三个容器之间切换,每个容器都有一个嵌入式 tableviewcontainer,我根据需要通过显示/隐藏在它们之间切换:

@IBOutlet var listPicker: UISegmentedControl! 
@IBOutlet var dueView: UIView!
@IBOutlet var nextView: UIView!
@IBOutlet var doneView: UIView!

switch sender.selectedSegmentIndex{
        case 0: 
        dueView.hidden = false
        nextView.hidden = true
        doneView.hidden = true
    ...
    }

每个视图都链接到故事板中的 UITableViewController:

除了显示(取消隐藏)视图(正在运行)之外,是否还有一种方法可以像选项卡栏控制器一样刷新其内容?

首先打印以下内容:

print(self.childViewControllers)

然后你就会知道你的 ViewController 的子索引然后使用下面的

    @IBAction func segmentValueChanged(sender: AnyObject) {


        switch (sender.selectedSegmentIndex) {
  case 0:
       dueView.hidden = false
        nextView.hidden = true
        doneView.hidden = true
 // create object from your nextView and refresh it
    var myClass : ViewController = self.childViewControllers[0] as! ViewController
    myClass.tableView.reloadData()
    myClass.viewWillAppear(false)

   break;


  default:
    break;
       }


    }

假设您有以下容器及其持有量 ViewControllers :

dueView.hidden = false
nextView.hidden = true
doneView.hidden = true

如果它在情节提要视图中排序为 1- dueView 然后 2-nextView 3- doneView 那么索引应该是但是这又完全取决于你如何对它们进行排序以显示:

 dueView : self.childViewControllers[0]
 nextView : self.childViewControllers[1]
 doneView : self.childViewControllers[2]

更新:

由于在视图控制器之前有导航控制器,因此您可能需要强制转换以获取顶视图控制器,然后重新加载数据。

祝你好运!