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

时间:2015-09-24 11:39:56

标签: ios xcode swift uiview uisegmentedcontrol

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

enter image description here

分段控件在三个容器之间切换,每个容器都有一个嵌入式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:

enter image description here

有没有一种方法可以像标签栏控制器那样刷新其内容,而不仅仅是显示(取消隐藏)视图(

1 个答案:

答案 0 :(得分:0)

首先打印以下内容:

sudo service gitlab restart
Starting GitLab Unicorn
Starting GitLab Sidekiq
Starting gitlab-git-http-server
/etc/init.d/gitlab: 223: /etc/init.d/gitlab: bin/web: not found
/etc/init.d/gitlab: 230: /etc/init.d/gitlab: bin/background_jobs: not found
..............................Waited 30s for the processes to write their pids, something probably went wrong.

然后您将知道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

如果它在故事板的视图中排序,如1- dueView然后2-nextView 3- doneView那么索引应该是,但这又取决于你如何对它们进行排序以显示:

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

更新:

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

祝你好运!