UITableview: Как отключить выделение для некоторых строк, но не для других - PullRequest
274 голосов
/ 15 февраля 2010

Я отображаю в группе tableview содержимое, проанализированное из XML. Я хочу отключить событие щелчка по нему (я вообще не смогу его щелкнуть). Таблица содержит две группы. Я хочу отключить выбор только для первой группы, но не для второй группы. Нажав на первый ряд второй группы navigates на мою трубку player view.

Как я могу сделать выбор только определенных групп или строк?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if(indexPath.section!=0)
    if(indexPath.row==0)    

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:tubeUrl]];   
}

Спасибо.

Ответы [ 21 ]

0 голосов
/ 22 декабря 2014

Реализуйте только метод tableView:willSelectRowAtIndexPath: в источнике данных для вашей таблицы. Если вы хотите, чтобы строка в пути была выделена, верните заданный indexPath. Если нет, верните ноль.

Пример из моего приложения:

- (NSIndexPath *)tableView:(UITableView *)tableView
    willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MySelectableObj* obj = [self objectAtPath:indexPath];
    if(obj==nil) return nil;
    return indexPath;
}

Приятно то, что shouldPerformSegueWithIdentifier:sender: не будет вызываться, если вышеупомянутый метод возвращает ноль, хотя я повторяю тест выше только для полноты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...