Итак, у меня есть приложение для iPhone, которое использует UINavigationController для настройки представлений. Когда приложение запускается в первый раз, оно представляет пользователю UITableViewController, и пользователь может выбрать элемент, и оно будет выдвигать другое представление. Теперь он настроен так, что мое приложение запоминает последний выбор пользователя, автоматически выбирает его и загружает правильный контроллер вида. Единственная проблема заключается в том, что я испытываю действительно странный сбой при автоматической загрузке следующего представления ..
Когда вид нажимается, панель инструментов навигации изменится так, что будет отображаться кнопка возврата, направленная на предыдущий вид, но не будет отображаться следующий вид. Вместо этого он будет продолжать отображать табличное представление, и я также могу взаимодействовать с ним. Я могу нажать кнопку «Назад», и она изменит панель инструментов назад, а табличное представление все еще будет отображаться. Затем, когда я выбираю элемент, он прекрасно загружает изображение.
Спасибо за помощь.
Код:
Я определяю, выдвигать ли контроллер представления в зависимости от того, может ли он подключиться к серверу. Я делаю это в фоновом потоке:
- (void)startingThread
{
[NSThread detachNewThreadSelector:@selector(loginThread:) toTarget:self withObject:communicator];
}
- (void)loginThread:(MowerCommunicator *)communicator
{
//If it can connect, launch thread complete.
[self performSelectorOnMainThread:@selector(loginThreadComplete:) withObject:communicator waitUntilDone:NO];
}
- (void)loginThreadComplete:(MowerCommunicator *)communicator
{
//push view controller
}
Теперь я добавил операторы NSLog, чтобы отслеживать, действительно ли представление «показывает» и вызывается ли viewWillAppear и viewDidAppear. Я также проверяю методы делегата для контроллера навигации, и они также вызываются.
У меня есть представление, которое является начальным представлением при запуске, и оно читает с сервера, чтобы определить, что отображать в следующем представлении таблицы. Это толкается нормально, и когда таблица перемещается, я скрываю кнопку «Назад», чтобы пользователь не мог вернуться к первому виду, не закрыв приложение. Затем табличное представление просматривает переменную в NSUserDefaults, чтобы определить, существует ли сохраненный индекс, и затем отправляет следующий контроллер представления. Вот когда происходит сбой. Если я затем нажимаю кнопку «назад», чтобы «вернуться» к представлению таблицы (это на самом деле просто меняет панель инструментов навигации), а затем я выбираю элемент из представления таблицы, он корректно загружает следующее представление. Кроме того, я вызываю те же самые методы, когда пользователь нажимал элемент из табличного представления и когда приложение автоматически загружает представление.