2013-12-04 3 views
0

У меня есть 2 раздела на моем контроллере UITableview. В одном из моих разделов есть переключатель, и мое требование - когда я устанавливаю переключатель в положение ON, второй раздел должен быть скрытым вместе со всеми его строками. Я звоню следующий метод/код, чтобы скрыть раздел, когда состояние выключателя изменяется:Скрытие секции UITableView вместе со всеми строками в ней

- (void)setState 
{ 
    myTableViewCell *myCell = [[myTableViewCell alloc] init]; 
    if ([myCell.mySwitch isOn]) 
    { 
     NSIndexPath *indexPath = [NSIndexPath indexPathWithIndex:1]; 
     [self.tableView cellForRowAtIndexPath:indexPath].hidden = YES; 
    } 
} 

Я получаю следующее исключение для этого кода, который я понимаю, это совершенно верно.

Name = NSInternalInconsistencyException; 
Reason = "Invalid index path for use with UITableView. Index paths passed to table view must contain exactly two indices specifying the section and row. Please use the category on NSIndexPath in UITableView.h if possible."; 

Но как я могу скрыть полный раздел вместе со всеми его строками. Если я попытаюсь получить индексный путь, используя NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1];, это просто скроет 1-ю строку в этом разделе.

+0

Является ли ваш стол классическим или динамическим? – Chris

+0

Это динамический вид таблицы. –

ответ

0

Если вы хотите скрыть целый раздел, когда переключатель включен, просто reloadData при нажатии на переключатель, и возвращать 0 в numberOfRowsInSection для этого раздела и возврата totalNumberOfSections - howManySwitchesIsOn в numberOfSectionsInTableView, как это:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    if(howManySwitchesIsOn) { 
     return totalNumberOfSections - howManySwitchesIsOn; 
    } 
    return totalNumberOfSections; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if(section should be hide) { 
     return 0; 
    } 
    return howManyRowsForThatSection; 
} 
0

Раздел удаление и вставки в сгруппированный UITableView осуществляются через:

- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 
- (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 

Заканчивать SectionHidingDemo, демо-приложение, которое иллюстрирует раздел удаление и вставка в группе ed UITableView с использованием этих методов.

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