2014-02-04 5 views
0

Как отключить все ячейки, кроме первых 3 ячеек UITableView?Отключить ячейки TableView

Это возвращает ноль, если выбран один из клеток с ограниченными физическими возможностями:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

if (indexPath.row >= 3) { 
    [[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]] setAlpha:0.5]; 
    return nil; 
} 

return indexPath; } 

Как я могу сделать отключенные клетки «видимыми»? Это работает, но я только при запуске, так как indexPath каждых изменений клеток при прокрутке (повторное использование клеток):

for(int i = 3; i <= 100; i++) { 
    [[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] setAlpha:0.5]; 
} 

ответ

2

Лучше всего установить непрозрачность отключенных ячеек в tableView:cellForRowAtIndexPath:. Поскольку @Parcs правильно говорит в his answer, вы также можете установить userInteractionEnabled для отключенных ячеек NO.

Вы можете просто игнорировать краны в неактивных ячейках в tableView:didSelectRowAtIndexPath:.

+0

Да, это отлично работает при первом запуске приложения, но когда я прокручиваю вниз изменение indexPaths (tableView перерабатывает ячейки), и все ячейки отключены. – MappleDev

+0

Вам нужно только отключить ячейки для определенных indexPaths. Не забудьте также явно включить ячейки, которые должны быть включены внутри 'tableView: cellForRowAtIndexPath:'. Это предотвратит проблему повторного использования соты, которую вы видите. – Macondo2Seattle

+0

Я использую этот код внутри 'tableView: cellForRowAtIndexPath:': 'if (indexPath.row> = 3) { cell.userInteractionEnabled = NO; cell.selectionStyle = UITableViewCellSelectionStyleNone; } ' – MappleDev

2

Вы можете отключить ячейки, установив свойство selectionStyle см код ниже:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ... 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

} 

Другой способ отключить выбор ячейки - отключить взаимодействие пользователя сотовой ячейки. См. Приведенный ниже код:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UITableViewCell *cell = ... 

     cell.userInteractionEnabled = NO; 

    } 

Наслаждайтесь. :)

+0

Да, это хорошо работает при первом запуске приложения, но когда я прокручиваю изменения indexPaths (tableView перерабатывает ячейки), и все ячейки отключены. - – MappleDev

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