UITableViewController не выделяет ячейку, когда она выделена - PullRequest
0 голосов
/ 16 января 2011

Привет, у меня простой вопрос, на который я не знаю, как ответить.В моем приложении у меня есть UITableViewController с ячейками.Когда я выбираю один элемент (ячейку), он выделяется, а в другом потоке я загружаю порцию данных для отображения пользователю (после того, как загрузка завершена, новый VC выдвигается).Делая это с потоком, пользователь все еще может взаимодействовать с приложением, как, возвращаясь к другому NavController, и я хочу, чтобы это произошло.Чего я не хочу, так это того, что когда загрузка не завершена, пользователь может выбрать другую ячейку в таблице, и она будет выделена.Как я могу предотвратить это (только выделение, я проверяю, был ли предыдущий запрос, поэтому я не помещаю другой поток, пока не выполнен предыдущий запрос).

Итак, в основном мой вопрос: как вы можете сделать это?пользователь взаимодействует с контроллером табличного представления?

Ответы [ 3 ]

2 голосов
/ 16 января 2011

Установите selectionStyle из UITableViewCell в UITableViewCellSelectionStyleNone.

1 голос
/ 16 января 2011

Вы можете использовать следующее, чтобы проверить, можно ли выбрать строку:

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

         if (rowSelected) {
              return nil;
         }

         return indexPath; 
    }

Таким образом, вы выбираете ее только в том случае, если строка не выбрана.В вашем методе didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

rowSelected = YES;
// call method that is going to do something and mark rowSelected = NO; 
}

Вы можете отменить выбор строки, используя

[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
0 голосов
/ 16 января 2011

Существует риск того, что ваши пользователи будут сбиты с толку.Выделение недостаточно.Должна быть очень четкая визуальная обратная связь о том, что работа сети продолжается и что применяются другие правила.

  • либо откройте представление подробностей сразу после того, как пользователь выберет строку, и отобразите там индикатор активности.*
  • или измените вид всей таблицы при загрузке данных для выбранной строки: например, Показать индикатор активности в выбранной строке и скрыть шевроны раскрытия во всех остальных.При этом вы можете установить стиль выделения на «none»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...