2015-09-24 1 views
0

Я использую сегментированный элемент управления для дополнения контроллера табуляции и добавления дополнительных параметров в этот раздел.Используйте сегментированный элемент управления для переключения * и обновления * subviews

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

Скорее тх n просто показывая (показывая) представление (которое работает), есть ли способ обновить его «содержимое» так же, как и контроллер панели вкладок?

+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-NEXTVIEW 3- doneView то индексы должны быть, но опять все зависит от того, как вы отсортирован их, чтобы показать:

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

Update:

С у вас есть контроллер навигации перед вашим контроллером просмотра, тогда вам может потребоваться бросить, чтобы получить контроллер верхнего уровня, а затем перезагрузить данные.

Удачи вам!