2012-06-01 8 views
0

В моем приложении я использую tableviews, заполненный синтаксическим разбором XML, я получаю свой XML от ftp, XML содержит другие URL-адреса xml для следующих видов и изображений, URL-адреса и текст, Проблема заключается в том, когда элемент tableview выбран, он подталкивает к другому представлению, но загружается в течение очень долгого времени. Я запускаю свое приложение в симулятор, я никогда не тестировал его на устройстве.медленное нажатие при выборе элемента tableview

Неужели кто-нибудь знает, в чем проблема?

Это проблема связи?

будет ли он работать нормально на устройстве?

+0

Было бы полезно опубликовать некоторые из ваших кодов, которые обрабатывают переход от одного вида к другому. Это через segue или вы нажимаете его вручную? Какую настройку вы делаете, прежде чем она нажимает? Нужно больше информации. –

ответ

1

Я бы предложил проверить ваш код на устройстве и не делать предположений о peformace. Я предполагаю, что вы идете на сервер и попросите отобразить эти изображения в нажатом виде. В этом случае вы должны загрузить представление с помощью заполнителей изображений и открутить загружаемые изображения во вторичном потоке (хорошая привычка к медленной загрузке, чтобы не блокировать пользовательский интерфейс), и обновлять места размещения изображений по мере того, как данные изображения становятся доступными.

Я с удовольствием обновлю этот ответ, если вам нужна более конкретная помощь.

Если вы загружаете табличное представление в своем толкаемом представлении, повесьте его на просмотр перед тем, как этот толкаемый вид (это очень страшный UX). Поэтому переместите логику кода, которая занимает некоторое время в подклассе «push-view», вы можете реализовать что-то вроде spinner (я использую MBProgressHud), пока вы хрустите данные. Таким образом, вы получите представление, загруженное до начала лаг.

Теперь потока для улучшения UX может быть следующим:
1. В - (void)viewDidLoad толкаемом зрении, вы можете скрыть TableView (или нет).

[self.myTable setHidden:YES]; 

2. В -(void)viewDidAppear:(BOOL)animated толкаемом зрении подбросить вертушку для пользователя, чтобы знать, что вы делаете (работу здесь время собираетесь на сервер, чтобы искать для изображений с URL-адресов) и сделать работу ,

//your code here will vary 

3. Когда вы знаете, что все ваши данные загружены, просто загрузите стол, спрячьте счетчик и покажите таблицу. Вы можете сделать это в конце метода -(void)viewDidAppear:(BOOL)animated.

[MBProgressHUD hideHUDForView:self.view animated:YES]; 
    [myTable reloadData]; 

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

+0

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

+0

Хорошо, я снова предполагаю (пожалуйста, поправьте меня, если я ошибаюсь). Если вы загружаете что-то наподобие табличного представления на толкаемом представлении, и у вас есть код делегата и источника данных в этом представлении, он будет работать со всеми делегатами и источниками данных, прежде чем он на самом деле подтолкнет представление, и это вызовет зависание (оно будет выполнять viewdidload сначала тоже). Если это так, дайте мне знать, я могу помочь вам в этой конкретной проблеме.Выполнение загрузки в основном потоке является рецептом проблем с пользовательским интерфейсом, но если мое предположение верно, мы должны сначала решить эту проблему. Дай мне знать. – Sparq

+0

вы правы, я использую tableView на толкаемом представлении, но на самом деле он зависает до того, как он подталкивает к просмотру (выделенная ячейка подсвечивается во время зависания), в течение примерно 20 секунд, а затем она толкает и отображает вид, подобный я хотел, чтобы меня показали. – Hosni

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