2015-06-25 3 views
0

Я создал UITableView в IB. Этот вид содержит 5 разделов и каждую секцию некоторых ячеек. Первая ячейка в некоторых разделах предоставляет конечному пользователю возможность отображать/скрывать остальные ячейки, принадлежащие тому же разделу.Скрыть/показать ячейки в UITableView?

Мой код до сих пор:

import UIKit 

class SettingsVC: UITableViewController { 

    @IBOutlet var showCallForwardSwitch: UISwitch? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func toggleValueChanged(sender: UISwitch) { 

     if showCallForwardSwitch!.on { 
      println("switch is on") 
     } else { 
      println("switch is off") 
     } 

     tableView.reloadData() 
    } 
} 

Так что есть только IBOutlet и IBAction. Я могу получить событие через функцию toogleValueChanged, но я не знаю, что делать с этого момента. Какие методы мне нужно использовать?

enter image description here

ответ

1
override func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat 
{ 
    let cell:DetailCell = self.tableView.cellForRowAtIndexPath(indexPath) as DetailCell // ???????? 

    var height:CGFloat = 84.0; 

    if ("toggel on"){ 
     height = 84.0; 
    } 
    else{ 
     height = 0.0; 
    } 

    return height; 
} 
+1

Что такое DetailCell? Откуда вы знаете, что работаете в правильном разделе? – cateof

0

Вы не хотите перезагружать весь Tableview из одной секции. Я предлагаю использовать deleteRowsAtIndexPaths(_:withRowAnimation:), сохраняя только первую ячейку, чтобы пользователь смог снова отобразить остальную часть раздела. Обновите источник данных и используйте некоторый флаг, чтобы вы знали, какая ячейка не отображается.

Смежные вопросы