То, как вы это делаете, не совсем правильно, и я бы посоветовал немного почитать, чтобы ознакомиться с программированием на iOS.
Структура вашей программы должна быть такой: создать контроллер навигации (2) для управления стекомконтроллеров представления, дающих ему viewController (1), который будет действовать как его root.
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// 1
FirstViewController *firstViewController = [[FirstViewController alloc] init];
// 2
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
[firstViewController release]; firstViewController = nil;
self.window.rootViewController = navigationController;
[navigationController release]; navigationController = nil;
[self.window makeKeyAndVisible];
return YES;
}
Это покажет ваш первый контроллер представления внутри UINavigationController . UINavigationController отвечает за управление стеком UIViewController и предоставление вам пользовательского интерфейса для перехода обратно вниз по стеку, а также за вызов всех соответствующих методов, связанных с представлением, на UIViewController в правильное время, например viewDidLoad
.Вы должны проверить Руководство по программированию контроллера View для большого количества информации
Затем внутри вашего первого контроллера View вы делаете что-то вроде этого, чтобы ответить на кнопку:
- (IBAction)buttonClicked:(id)sender;
{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release]; secondViewController = nil;
}
Это создает новый контроллер представления и помещает его в стек.