2013-04-05 1 views
2

Когда пользователь выбирает строку в моей таблице, мне нужно загрузить кучу данных с помощью CoreData. Это занимает несколько секунд (по крайней мере, при запуске на симуляторе - пока не тестировалось на устройстве, но я думаю, что это будет довольно долго). Я хочу отображать загрузочный экран (я разрабатываю для iPad), когда пользователь выбирает строку, а затем исчезает после загрузки данных.Отображать экран ожидания, когда пользователь выбирает строку UITable

При работе с UIButtons я всегда делал это, запуская метод TouchDown и TouchUp. Я помещаю код для отображения popover на TouchDown, а затем выполняю всю мою фактическую работу (так что в этом случае загрузка из CoreData) в TouchUp. Затем, в конце TouchUp, я закрываю popover.

Есть ли способ разделить штрихи в виде таблицы так же, как на кнопке?

+0

Несколько секунд !? Можете ли вы оптимизировать свои данные? Это кажется слишком длинным для загрузки. –

+0

Это много данных. Я не использую все это сразу, поэтому, полагаю, я мог бы попытаться разбить его немного, так что для доступа требуется меньше времени, но получение его сразу просто было похоже на более организованный способ сделать это. И приятно знать, что как только я сделаю эту загрузку, у меня есть все, что мне понадобится, поэтому мне не нужно беспокоиться о ситуациях, когда я мог бы загружать данные, необходимые для определенной операции, в некоторых случаях, но не для других. В целом, я думаю, что так лучше. – GeneralMike

ответ

1

Так что, пока я печатал вопрос, я натолкнулся на что-то в Apple Docs на willSelectRowAtIndexPath, и похоже, что это касается этой самой проблемы. Я не видел никаких других тем в этом вопросе, так что я решил, что воспользуюсь этим «Ответ собственным вопросом - Q &». Функция здесь, поэтому, возможно, люди, которые ищут это в будущем, найдут это немного Полегче.


Огромный FYI блок:

Я хотел бы отметить, что willSelectRowAtIndexPath на самом деле должен возвращать NSIndexPath, в отличие от didSelectRowAtIndexPath (который возвращает void). Тем не менее, у меня первоначально было

-(void)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //stuff 
} 

Обратите внимание, что тип возврата void. Xcode (версия 4.5) допускал это без каких-либо ошибок или предупреждений (и даже имел это для меня в списке автозаполнения). Когда я запускал код таким образом, я всегда ударил невидимую точку останова в libobjc.A.dylib'objc_autorelease: (может быть, у меня есть точка останова «Все исключения»?). Я не мог пройти мимо этой точки останова, у меня никогда не было отладочной информации в консоли вывода отладчика, и приложение никогда не прерывалось. Я снова посмотрел на Apple Doc и заметил, что он должен был вернуть NSIndexPath (в частности, путь индекса, который должен интерпретировать код как тот, который был выбран), но если бы я не увидел его там, Я никогда бы не знал, в чем проблема.


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