Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
carkov_1990
19 / 8 / 1
Регистрация: 28.12.2012
Сообщений: 32
#1

Обновление данных в таблице - Программирование iOS

15.04.2013, 17:16. Просмотров 1311. Ответов 7
Метки нет (Все метки)

Добрый день!
При работе над проектом возник вопрос...
Есть таблица, есть метод загрузки данных с сервера. Когда приходят данные метод должен обновить данные в таблице.
Это все понятно и ясно. Делается просто
Objective-C
1
[self.table reloadData];
Но это происходит не сразу, а через какое то время. Почему так? Почему данные не сразу загружаются? Тоже самое и с сообщениями UIAlert и UIToast. Они появляются не сразу, а через какое то время. Как сделать чтобы данные действия выполнялись сразу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 17:16     Обновление данных в таблице
Посмотрите здесь:

обновление списка - Программирование iOS
Делаю типа читалки твитера (stroyboard) , отправляю запрос заполнения таблицы ...

Обновление iphone 4s - Программирование iOS
Хорошее ли обновление IOS 9.3.1 на Iphone 4s?

Ошибка в таблице - Objective-C
Добрый вечер! Есть контролер с таблицей, запускается нормально, но когда начинаешь прокручивать таблицу, возникает ошибка. Вот код //h ...

Обновление Annotation на MKMapView - Swift
Добрый день подскажите как мне решить одну проблему: у меня есть динамический массив, с данными, которые я получаю с сервера, там...

Обновление Enterprise приложения - Программирование iOS
Доброго времени суток! Подскажите, пожалуйста, может сталкивался кто-нибудь. Прошел год с момента регистрации Enterprise аккаунта и...

Обновление XCode -> тормоза в StoryBoard - Программирование iOS
Всем привет! В первый же день выхода обновления XCode 5.0 - поставил новую версию, и моментально появились жестокие тормоза в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
16.04.2013, 09:02     Обновление данных в таблице #2
- reloadData метод всего лишь говорит вашему UITableView "перезапросить данные" у dataSource своего.
Ни про какой сервер там даже речи не идет.
Но если вы в делегатовском методе (например - tableView:cellForRowAtIndexPath обращаетесь к удаленному серверу - ну тогда конечно же будет задержка. Время на передачу данных и на обработку запроса еще никто не смог убрать.

Цитата Сообщение от carkov_1990 Посмотреть сообщение
Как сделать чтобы данные действия выполнялись сразу?
Опять же - что такое сразу? 20 лет назад одно и то же действие занимало часы, сейчас доли секунды.
Это "сразу" или нет?
Если идет работа с удаленным сервером - то по существу задержку не убрать вообще никак. Ее можно только минимизировать, но тут разнообразных техник очень много, и это тема отдельного разговора.

А делается все просто - сначала запрашиваете данные с сервера, запоминаете ответ, а потом вызываете -reloadData, и в делегатовских методах отдаете уже запрошенные данные.
А пока идет запрос - показываете индикатор сетевой активности/etc.


Цитата Сообщение от carkov_1990 Посмотреть сообщение
Почему данные не сразу загружаются?
А на этот вопрос я отвечу кратко - "потому что гладиолус".

Не по теме:

Не удержался



Учитесь формулировать вопросы по существу. (Насколько я понял чуть позже, они все таки УЖЕ были загружены, это отображение их "запазывает", так?)

UPD:
Перечитал на несколько раз вопрос...
На ум еще что пришло - может вы не в главном потоке чтото делаете?
carkov_1990
19 / 8 / 1
Регистрация: 28.12.2012
Сообщений: 32
16.04.2013, 09:50  [ТС]     Обновление данных в таблице #3
zulkis, за гладиолус конечно спасибо. Алгоритм такой- при загрузке страницы в didLoad идет запрос асинхронный на сервер. После получения данных вызывается в контроллере (делегированием) функция onComplete,которая сохраняет данные в source таблицы и делает reloadDate. Все методы создания ячейки и возвращения ее таблице(т.е. заполнение таблицы) определены. Но после reloadData в переопределенные методы приходит примерно через секунд 5-6. Это если ничего не делать,а вот если например сдвинуть таблицу вниз, то данные загружаются моментально(т.е. мы приходим в переопределенные методы). Вот и возник вопрос почему так и как это можно исправить?
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
16.04.2013, 17:20     Обновление данных в таблице #4
Проверяй загрузку данных...данные должны быть предварительно загружены...reloaddate сразу обновляет данные если они подгруженны никаких задержек там не должно быть
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
16.04.2013, 18:06     Обновление данных в таблице #5
А как насчет потокобезопасности? Весь UI код должен в главном потоке вызываться. Так что в этом самом onComplete я бы написал что-то типа такого:
Objective-C
1
2
3
dispatch_async(dispatch_get_main_queue(), ^{
        [tableView reloadData];
    });
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
16.04.2013, 22:16     Обновление данных в таблице #6
ну или так
Objective-C
1
[self.tableView perfomSelectorOnMainThread:@selector(reloadDate) object:nill]
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
17.04.2013, 16:40     Обновление данных в таблице #7
Есть таблица, есть метод загрузки данных с сервера. Когда приходят данные метод должен обновить данные в таблице.
дождитеcь полной или частичной загрузки данных и только после этого вызывайте [self.table reloadData];

дождаться можно через вот этот класс

http://www.imaladec.com/story/apidownload
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 18:51     Обновление данных в таблице
Еще ссылки по теме:

Обновление одного контроллера другим - Программирование iOS
Здравствуйте, уважаемые коллеги! Решил вот написать программу в OS X с "хорошо пахнущим кодом". Отделил бизнес-логику в отдельные...

Обновление данных в таблице - MS Access
Нужно сделать следующий запрос: "Уменьшить на 10% стоимость тех заказов,клиент которых арендовал несколько автомобилей одной марки". Вот...

Обновление данных в таблице - MS Access
Есть таблица в аксесе по типу: Поле1 Поле2 Поле3 знач1 знач3 знач5 знач2 знач4 знач6 Потом по каждой записи складываю значения:...

Обновление данных в таблице - VBA
Здравствуйте! На Лист "ЕИИС" висит база из номеров ("A") и наименования ("B"). На лист "Сканер" падают номера в колонку ("A"). Есть кнопка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
perlik
38 / 38 / 1
Регистрация: 26.01.2013
Сообщений: 140
21.04.2013, 18:51     Обновление данных в таблице #8
Я вобще решил все просто. я прилепил 2 виду обновления вручную. первый кнопка второй с анимацией как у tweetbot. потом будет время сделаю автоматом. просто не так часто новости обновляются, что бы ставить автомат туда
Yandex
Объявления
21.04.2013, 18:51     Обновление данных в таблице
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru