Это:
@implementation FirstView
SecondView *secondView;
... скорее всего источник вашей аварии. Вы не должны определять переменные экземпляра в реализации. Компилятор может разрешить это, но среда выполнения будет перепутана, и переменная экземпляра не будет должным образом сохранена.
Вы должны определить это как:
@interface FirstView : UIViewController {
SecondView *secondView;
}
@property(nonatomic, retain) SecondView *secondView;
... и используйте его как:
-(IBAction) goToSecondView:(id) sender{
UIView *newView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
self.secondView=newView;
[newView release];
[self.view addSubview:self.secondView.view];
}
Для ясности вам следует также переименовать FirstView
и SecondView
в FirstViewController
и SecondViewController
, поскольку они являются контроллерами представления, а не самими представлениями.
В целом, то, что вы пытаетесь сделать, опасно и сложно. Вы не меняете представления, добавляя и удаляя их как подпредставления. Вам необходимо поменять контроллер представления и их представления с помощью UINavigationController или UITabbarController. В Xcode File> New Project есть проект, основанный на Навигации, и шаблоны проектов, основанные на Tabbar. Любой из них предоставит вам большую часть кода, необходимого для реализации простого приложения с использованием любого контроллера.
Будет хорошо потратить ваше время на изучение того, как правильно использовать эти контроллеры. С вашим текущим дизайном ваше приложение сломается, если оно получит гораздо больше, чем два просмотра.