У меня есть три вида: всплеск, логин и список.
Из Splash я просто жду, а затем Push View View, со скрытой панелью навигации.
В логине я показываю панель навигации, скрываю BackButton1 и добавляю новую RightButton1, затем проверяю, установлены ли в файле Settings.bundle «login» и «pass». Если это так, я нажимаю список. В противном случае я останусь в режиме входа в систему, ожидая, пока пользователь заполнит форму и нажму кнопку.
В виде списка я добавляю новый RightButton2 и новый BackButton2.
Проблема заключается в том, что если данные Settings.bundle не равны NULL, и в представлении входа в систему я быстро нажимаю «Просмотр списка», то в представлении «Список» появляется RightButton1, либо вообще не отображаются кнопки, либо не отображается только BackButton2 ...
Самое странное в том, что все было в порядке, и вдруг стало грязно.
Вход в систему:
// Making the Navigation Bar Visible
[self.navigationController setNavigationBarHidden:NO animated:NO];
// Hiding the Back Button in THIS view (Login)
[self.navigationItem setHidesBackButton:YES];
// Inserting the Logout Button for the Next View (List)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle:@"Logout"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
UIBarButtonItem* newAccountButton = [[UIBarButtonItem alloc]
initWithTitle:@"New Account"
style:UIBarButtonItemStylePlain
target:self
action:@selector(newAccountButtonPressed)];
self.navigationItem.rightBarButtonItem = newAccountButton;
[newAccountButton release];
Список
// Making the Navigation Bar Visible
[self.navigationController setNavigationBarHidden:NO animated:NO];
UIBarButtonItem* aboutButton = [[UIBarButtonItem alloc]
initWithTitle:@"About"
style:UIBarButtonItemStylePlain
target:self
action:@selector(aboutButtonPressed)];
self.navigationItem.rightBarButtonItem = aboutButton;
[aboutButton release];
Есть идеи?
ОБНОВЛЕНИЕ: Я проверил больше, и мне кажется, что когда я быстро перехожу из Login в List, NavigationBar не хватает времени, чтобы добавить кнопки и добавить кнопки и панели в неправильный порядок. Я использовал executeSelector, чтобы заставить представление Login ждать до тех пор, пока не будет нажата List, и если задержка равна 2secs, все идет хорошо, но если она равна 0.1secs, проблема появляется снова.
Я использую viewDidLoad .. Как сделать так, чтобы представление входа в систему только выдвигало представление списка после того, как все в его навигационной панели уже в порядке? Другими словами, как я могу заставить push ожидать всех предыдущих команд без задержки с фиксированным временем?