IBAction не вызывается в Subview - PullRequest
2 голосов
/ 16 марта 2011

Я создаю простое приложение, которое позволяет пользователю просматривать фильмы после нажатия кнопок.Первый экран, который вы видите, это главное меню с 2 кнопками.Один из них отправляет пользователя во вспомогательное представление, которое я кодировал следующим образом в методе IBAction:

ViewConroller *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];
[self.view addSubview:[nextView view]];
[nextView release];

Эта часть хороша, за исключением того, что вспомогательное представление показывает полосу размером 20 пикселей в нижней части предыдущего представления,Я оглянулся вокруг, и ни одно из решений, таких как , это не работает для меня.Это даже не главная проблема.В дополнительном представлении, когда я нажимаю кнопку, приложение взрывается.Методы IBAction прерываются даже до выполнения строки внутри метода.Здесь, в методе goBack IBAction, я пытаюсь закрыть подпредставление и вернуться в главное меню:

[self.view removeFromSuperview];

В моих файлах XIB правильные соединения, и все, кажется, в порядке.Кнопки просто не работают.Я не уверен, имеет ли это отношение к добавлению под-представления или как.Я много раз искал в Google и на этом сайте, но до сих пор не могу найти решение.

Вот пример ошибки, которую я получаю:

Terminating app due to uncaught exception 'NSInvalidArgumentException, reason: '-[__NSCFType goBack:]: unrecognized selector sent to instance 0x5640b70'

Надеюсь, вы, ребята, можете мне помочь, это действительно очень расстраивает.Я чувствую, что перепробовал все.Спасибо за ваше время.Дайте мне знать, если мне нужно предоставить больше информации.Еще раз спасибо.

1 Ответ

3 голосов
/ 16 марта 2011
ViewConroller *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];

Просмотр контроллера создан.

[self.view addSubview:[nextView view]];

self.view добавленная стоимость nextView.view как его подпредставление и его сохранение (N.B. оно сохранило next.view значение не nextView само по себе)

[nextView release];

nextView освобождается и немедленно освобождается (потому что никто его никогда не удерживал)

Кнопка пытается отправить сообщение освобожденному объекту -> поведение не определено, в вашем случае есть какой-то другой объект (или что-то похожее на объект), и он не понимает, что означает goBack:.

Вот почему вы не должны изобретать колесо (особенно если вы новичок в этом) с вашей собственной навигацией. Вместо этого используйте UINavigationController.

...