2014-09-03 6 views
0

Итак, когда пользователь выбирает строку, я помещаю выделение в другой поток по соображениям производительности. Когда я снимаю его с основного потока, строка отбирается на несколько секунд, а затем переходит к следующему виду. Эти несколько секунд, когда строка отменяется и снимается с основного потока, пользователь имеет возможность быстро щелкнуть строку снова и снова - заставить приложение потенциально сбой. Итак, мой вопрос заключается в том, как отменить выбор взаимодействия с пользователем в строке таблицы внутри метода didSelectRowAtIndexPath? Теперь, пожалуйста, подтвердите, что я не хочу отключать взаимодействие пользователя до выбора строки. Я только ищу, чтобы отключить взаимодействие с пользователем в ячейке после выбора строки. Благодаря!Отключить взаимодействие пользователя, когда didSelectRowIndexPathRow называется

+0

Я хотел бы предложить экземпляр уровень 'BOOL '(что-то вроде' processingRow') и включить его, когда вы нажимаете на строку. Затем, когда фоновый поток заканчивается, отключите его. Сделайте так, чтобы до тех пор, пока он включен, вы не можете выбрать другую строку (или ту же строку, или же вы хотите, чтобы она работала). – Stonz2

+0

Итак, ваше высказывание делает объем объекта ячейки глобальным, поэтому я могу вызвать метод 'processRow' и отключить взаимодействие пользователя в методе' processRow'? – wayon

+0

Нет, я говорю, добавьте один «bool», который знает, обрабатываете ли вы. Я думаю, если вам нужно обработать несколько строк одновременно и только хотите отключить одну строку при ее обработке, вы можете либо создать массив 'bool' по одному для каждой строки, либо сохранить массив объектов indexPath и добавьте текущую 'indexPath', когда вы начнете обрабатывать и удалите ее, когда закончите так, если ваш' indexPath' уже существует в этом массиве при выборе строки, ничего с этим не делайте. – Stonz2

ответ

0

Сделать экземпляр переменной NSIndexPath selectedPath;

Добавить

[[self.tableView cellForRowAtIndexPath:indexPath] setUserInteractionEnabled:NO]; 
selectedPath = indexPath; 

к вашему didSelectRowAtIndexPath и в performSegueWithIdentifier (если вы используете раскадровку) добавить

[[self.tableView cellForRowAtIndexPath:self.selectedPath] setUserInteractionEnabled:YES]; 
Смежные вопросы