2015-10-06 1 views
0

Я хочу показать разные данные в tableview на основе выбора из сегментированного элемента управления. Ниже мой код показывает только первый TABLEVIEW DATASOURCE, и по какой-то причине segemented control не работает.Невозможно перезагрузить tabledata из UISegmentedControl

@IBOutlet weak var segementedControlAction: UISegmentedControl! 


var Names = ["Name1", "Name2","Name3","Name4"] 
var Images = ["1.jpg","2.jpg","5.jpg","8.jpg"] 
var set = ["14","15","16","17"] 

var Names1 = ["Name5", "Name6","Name7","Name8"] 
var Images1 = ["6.jpg","4.jpg","7.jpg","9.jpg"] 
var set1 = ["4","5","6","7"] 

var Names2 = ["Name9", "Name12","Name13","Name14"] 
var Images2 = ["11.jpg","21.jpg","51.jpg","81.jpg"] 
var set2 = ["114","115","116","117"] 


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    var count: Int = 0 
    tableView.layer.cornerRadius = 10 
    tableView.layer.masksToBounds = true 

    if (tableView == self.d1) { 
     print("Monday") 
     count = self.Names.count 
    } 
    else if (tableView == self.d2) { 
     print("Tuesday") 
     count = self.Names1.count 
    } 
    else if (tableView == self.d3) { 
     print("Wednesday") 
     count = self.Names2.count 
    } 

    return count 
} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> 
UITableViewCell { 

    let cellIdentifier = "Cell" 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: 
     indexPath) as! CustomTableViewCell 

if segementedControlAction.selectedSegmentIndex == 0 { 
    cell.nameLabel.text = Names[indexPath.row] 
    cell.thumbnailImageView.image = UIImage(named: Images[indexPath.row]) 
    cell.setLabel.text = set[indexPath.row] 

    } 

else if segementedControlAction.selectedSegmentIndex == 1 { 

cell.nameLabel.text = Names1[indexPath.row] 
cell.thumbnailImageView.image = UIImage(named: Images1[indexPath.row]) 
cell.setLabel.text = set1[indexPath.row] 
    } 


else {segementedControlAction.selectedSegmentIndex == 2 

cell.nameLabel.text = Names2[indexPath.row] 
cell.thumbnailImageView.image = UIImage(named: Images2[indexPath.row]) 
cell.setLabel.text = set2[indexPath.row] 

    } 

    return cell } 

@IBAction func segementedControlAction(sender: UISegmentedControl) { 
switch sender.selectedSegmentIndex { 

case 0: 
self.d1.hidden = false 
self.d2.hidden = true 
self.d3.hidden = true 

self.d1.reloadData() 

case 1: 

    self.d1.hidden = true 
    self.d2.hidden = false 
    self.d3.hidden = true 
    self.d2.reloadData() 

case 2: 

    self.d1.hidden = true 
    self.d2.hidden = true 
    self.d3.hidden = false 
    self.d3.reloadData() 



default: 
    self.d1.hidden = false 
    self.d2.hidden = true 
    self.d3.hidden = true 

    self.d1.reloadData() 
    break; 

} 
+0

Вы говорите: «segementedControlAction:' не срабатывает? Или его запуск, но табличный вид не перезагружается с правильными данными? Я считаю, что 'd1',' d2' & 'd3' - это табличные представления - почему у вас есть 3 таблицы? У вас может быть только одна таблица и перезагрузка с помощью данных на основе управления сегментом. – Abhinav

+0

Почему у вас есть 3 вида стола? Вам просто нужно 1. – rmaddy

+0

yes segementedControlAction не запускается, и мне нужны разные таблицы для загрузки из разных вариантов в segemented Control. –

ответ

0

Пожалуйста, убедитесь, что segementedControlAction подключен правильно с контроллера зрения. Вероятно, попробуйте выполнить следующие шаги:

  1. Удалить предыдущий адрес IBAction.
  2. Подключите свой segmentedControl к владельцу файлов.
  3. Подключитесь к действию segementedControlAction: и выберите «Значение Изменено« NOT «Прикоснуться внутрь». ЭТО ИМП.
  4. Распечатать заявление, чтобы проверить, есть ли segementedControlAction: сработал.
+0

Спасибо, что проблема решена. –

0

попробовать это:

В вашем методе viewDidLoad, добавьте это:

tableView.delegate = self 
tableView.dataSource = self