2011-02-09 2 views
1

У меня возникли проблемы с обратной навигацией к предыдущему контроллеру представления (в стеке моего контроллера навигации), когда пользователь вводит пользовательскую кнопку «назад», которая отображается в виде предупреждения. Я пробовал несколько способов сделать это, но я не смог это сделать. Когда эта кнопка нажата, приложение просто возвращается к контроллеру, который выталкивает предупреждение (как будто пользователь нажимает кнопку «cancelButton»). Надеюсь, что вы можете понять меня с этим примером кода:Назад навигация с кнопки просмотра предупреждения

В viewDidLoad я выскочит предупреждение с:

UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:@"XXXXXX" 
     message:@"" 
     delegate:self 
     cancelButtonTitle:@"OK" 
     otherButtonTitles:@"Back", nil]; 
    [alert show]; 
    [alert release]; 

Затем внутри кода контроллера представления я вызываю следующее действие, чтобы попытаться вернуться обратно :

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 1) 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
}} 

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


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

У меня есть навигационный контроллер, что в детерминированный момент, показывает просмотрите панель вкладок. Вы можете знать, что в контроллере навигации нет возможности реализовать контроллер панели вкладок, поэтому я использовал «настраиваемый контроллер», который вставляет эту панель вкладок.

Затем, с этой точки зрения с помощью панели вкладок (внутри которой я уже добавил некоторые подзаголовки) Я хочу перейти назад (нажав кнопку предупреждения) к виду без панели вкладок, что я считаю, что это предыдущий вид в стеке навигации, как я вижу, когда я нажимаю кнопку «Назад» в навигационной панели ...

Я не знаю, если теперь это яснее, или я вас больше смутил ... Я мог бы попробовать чтобы сделать вам схему контроллеров, если вы этого хотите. Спасибо за помощь!

+0

Ваше описание достаточно. Давайте, кто может помочь. –

+0

Вы уверены, что 'self.navigationController' не' nil'? И в контроллере навигации уже есть несколько контроллеров просмотра? – EmptyStack

+0

Прекрасно работает для меня. Проверьте код, на который вы нажимаете контроллер вида. – Max

ответ

0

пытается в отдельном потоке.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 1) 
{ 
    [self performSelectorInBackground:@selector(newThreadMethod) withObject:nil]; 
} 
} 
-(void)newThreadMethod{ 
    [self performSelectorOnMainThread:@selector(go) withObject:nil waitUntilDone:NO]; 
} 
-(void)go{ 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 

но это неправильный способ сделать. но на какое-то время это поможет вам.

+0

Я боюсь, что код имеет тот же результат, что и мой ... В любом случае, спасибо! – GDel

0

для части панели вкладок, я успешно объединил navControllers с tabController. Контроллер панели вкладок должен находиться в верхней части диаграммы, а вместо контроллера просмотра для каждого элемента панели вкладок используйте navControllers, особенно в первом элементе панели вкладок; просто скройте панель вкладок в первом viewDidLoad и покажите ее, когда вам это нужно.

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