Я работаю над приложением, которое позволяет пользователям отправлять сообщения людям, которых можно выбрать из множества разделов. Одним из таких разделов являются контакты, хранящиеся в телефонной книге (остальные контакты выбираются из онлайновой БД).
Таким образом, у меня есть «основной список» получателей. Если пользователь, например, решит выбрать контакт из своей онлайн-учетной записи, это приведет к появлению нового представления, которое позволит пользователю выбрать, какие контакты добавить в список получателей. Когда они вернутся к основному списку, они должны увидеть выбранных участников. Если они должны были вернуться, чтобы добавить другого человека, все выбранные контакты должны быть проверены (каждый контакт отображается как UITableViewCell).
Это отлично работает для всех онлайн-контактов, однако у меня возникли проблемы с реализацией этой функции для локальных контактов с использованием ABPeoplePickerNavigationViewController. Чтобы проверить выбранные контакты, когда пользователь вернется на этот экран, мне нужно иметь какой-то способ сейчас, когда представление загрузится.
Гарантировано ли, что какой-либо из делегатов представления (например, ViewDidAppear) будет вызван после загрузки таблицы (я довольно сомневаюсь в этом)?
Если нет, я подумал о подсчете общего количества строк в источнике данных (используя numberOfRowsInSection:) в таймере. Если полсекунды или около того прошло без увеличения счетчика, можно с уверенностью сказать, что все записи были загружены. Однако почему-то я не уверен, что это сработает. Возможно, все записи будут загружены за один раз.
Любые идеи о том, как этого добиться? Мои предложенные методы работают? Есть ли другой обходной путь?