2012-05-01 4 views
2

Я загрузил новый контроллер представления с этим IBAction, который срабатывает при нажатии кнопки.Почему я не могу убрать контроллер просмотра, который я загрузил?

-(IBAction)changeToAnotherView:(id)sender 
{ 
    if (self.newController == nil) 
    { 
     newController = [[UIViewController alloc] initWithNibName:@"NewViewController" bundle:[NSBundle mainBundle]]; 
    } 
    quizController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentViewController:newController animated:YES completion:NULL]; 
} 

Однако моя функция возврата к старому виду в NewViewController.m не построена. Зачем?

- (IBAction)goBackToOldView:(id)sender 
{ 
    [self dismissWithClickedButtonIndex:0 animated:YES]; 
} 

Ошибка сборки, которую я получаю, - «Нет видимого интерфейса, объявляет rejectWithClickedButtonIndex: animated:».


Update:

lldb Теперь выводит

"2012-04-30 21:31:56.530 Project32[10105:fb03] -[UIViewController goBackToOldView:]: unrecognized selector sent to instance 0x6c57f20 
2012-04-30 21:31:56.531 Project32[10105:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController goBackToOldView:]: unrecognized selector sent to instance 0x6c57f20' 
*** First throw call stack: 
(0x1649052 0x1bfdd0a 0x164aced 0x15aff00 0x15afce2 0x164aec9 0x2d05c2 0x50bd54 0x164aec9 0x2d05c2 0x2d055a 0x375b76 0x37603f 0x3752fe 0x2f5a30 0x2f5c56 0x2dc384 0x2cfaa9 0x2536fa9 0x161d1c5 0x1582022 0x158090a 0x157fdb4 0x157fccb 0x2535879 0x253593e 0x2cda9b 0x217d 0x20e5) 
terminate called throwing an exception(lldb)" 

Интересно, что я реализовал goBackToOldView в NewViewController:

- (IBAction)goBackToOldView:(id)sender 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

Проверьте, если у вас есть это в нужном месте, комментарии самозапуска dismissmodal .. часть , и поместите NSLog (кнопка @ «нажата»); Вероятно, это приведет к той же ошибке, что означает, что кнопка, которую вы нажимаете, вероятно, не связана с правильным действием, исследует ее в построителе интерфейса, последняя вкладка инспектора показывает его соединения. убедитесь, что он указывает на контроллер, у которого есть этот newviewcontroler.m, реализованный – Pochi

+0

Спасибо, вы правы! Комментируя увольнение ... и заменив его на 'NSLog (@" назад! "),' Аналогично терпит неудачу. Это действительно странно. Я просто перетащил строку из моего файла Nib и выбрал goBack. Weird ... –

+0

Хм, есть ли у вас какие-либо отладочные советы? Последняя вкладка инспектора показывает правильную функцию, я считаю. –

ответ

2

Изменить код на следующий, и он должен уволить правильно.

-(IBAction)changeToAnotherView:(id)sender 
{ 
    if (self.newController == nil) 
    { 
     newController = [[UIViewController alloc] initWithNibName:@"NewViewController" bundle:[NSBundle mainBundle]]; 
    } 
    quizController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentViewController:newController animated:YES]; 
} 

- (IBAction)goBackToOldView:(id)sender 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

Надеюсь, это поможет!

+0

Спасибо, но мое приложение вылетает при срабатывании этого IBAction. Ты знаешь почему? –

+0

@BillyGoswell Вы получаете сообщение об ошибке? –

+0

Я получаю SIGABRT в своей основной функции. –

3

Потому что это не правильная функция, это должно быть.

[self dismissViewControllerAnimated:YES completion:Nil]; 

(Вы можете заменить ноль на сдачи на блок, чтобы выполнить что-то после того, как контроллер был уволен.)

+0

Спасибо, но с - '(IBAction) goBack: (id) отправитель { [self rejectViewControllerAnimated: YES завершение: Nil]; } ', мое приложение вылетает при срабатывании IBAction. Вы знаете, почему? –

+0

Какая ошибка вы получаете? напишите его точно так же, как вы его получите. – Pochi

+0

Спасибо, я получил «Thread 1: signal SIGABRT» в моей основной функции. –

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