2015-09-24 34 views
0

我正在使用分段控件來補充選項卡控制器並在該部分中添加額外的選項。使用分段控制來切換*和刷新子視圖

enter image description here

三個容器之間的分段式控制開關,其中的每一個具有嵌入tableviewcontainer和i。由顯示/隱藏根據需要在它們之間翻轉:

@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

而塔ñ只是顯示(取消隱藏)視圖(這是工作),有沒有一種方法來刷新其內容太像標籤欄控制器一樣?

+0

是包含UITableView的所有視圖嗎? –

+0

它們包含UITableViewControllers。我將添加故事板的截圖。 – Derek

+1

我會避免創建圖層,我會有一個UITableViewController裏面的UINavigationController,並segmentedControl會改變數據源和委託 –

回答

0

首頁打印以下內容:

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 - 新思維3- doneView那麼指數應該是但同樣這一切都取決於你如何排序它們顯示:

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

更新:

由於您的視圖控制器之前有導航控制器,那麼您可能需要投射以獲取topview控制器,然後重新加載數據。

祝你好運!