Разрешить выбор ячейки таблицы на основе строки URL - PullRequest
0 голосов
/ 01 февраля 2012

Я создаю меню «избранные страницы» в своем приложении для просмотра таблиц, где пользователи могут сохранять свои любимые веб-страницы, а затем легче переходить к ним через меню.

Программа сохраняет имя страницы и URL-адрес для каждого любимого слота страницы в приложении настроек. URL-адрес по умолчанию - «чистый», что означает, что URL еще не существует (т. Е. Любимый слот не используется).

Когда пользователь щелкает ячейку просмотра таблицы для своей желаемой любимой страницы, представление переключается на UIWebview и URL-адрес загружается. Я сделал так, что если URL isEqualToString @"clear", то UIWebView не загрузит дисплей и «ничего» не произойдет.

Но когда пользователь нажимает на ячейку табличного представления с URL-адресом, установленным на «очистить», ячейка все равно подсвечивается синим цветом. Это дает пользователю понять, что ячейка таблицы не очищена. Можно ли в любом случае проверить, является ли URL isEqualToString @"clear" и остановить ли ячейка подсветкой синего цвета до того, как это произойдет?

Спасибо.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

РЕДАКТИРОВАТЬ: Это лучший способ (делать это в willSelect ... слишком поздно при первом нажатии).

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       ...
       if ( --THIS IS THE 'CLEAR' URL CASE-- ) {
            // This will prevent the **appearance** of being selected
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
       } else {
            cell.selectionStyle = UITableViewCellSelectionStyleBlue;
       }
       ...
  }

В didSelectCellForIndexPath ...

 if ( -- 'CLEAR' CASE -- ) {
       // Do nothing...
 } else {
       // do whatever you do for the selected case...
 }
0 голосов
/ 01 февраля 2012

Вы должны сделать это в tableView:willSelectRowAtIndexPath:

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

    NSString *url = [self urlForIndexPath:indexPath];

    if ([url isEqualToString:@"clear"])
        return nil;

    return indexPath;
}

Но если вы не хотите выделять синим цветом, вам также следует изменить selectionStyle ячейки в tableView:cellForRowAtIndexPath:

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