Вы правы, что не рекомендуется создавать контроллеры представления в AppDelegate.Вместо этого вы должны создать отдельный ViewController для каждого представления.В файле реализации для вашего rootViewController создайте методы, чтобы выдвигать отдельные контроллеры представления, которые вы хотите показывать при нажатии кнопок.Примерно так будет работать:
- (void)showAboutView
{
AboutViewController *aboutViewController = [[AboutViewController alloc] init];
[self.navigationController pushViewController:aboutViewController animated:YES];
}
- (void)showSettingsView
{
SettingsViewController *settingsViewController = [[SettingsViewController alloc] init];
[self.navigationController pushViewController:settingsViewController animated:YES];
}
Затем включите эти методы в поле селектора для ваших кнопок.Вот так:
UIBarButtonItem *aboutBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showAboutView)];
[[self navigationItem] setRightBarButtonItem:aboutBarButtonItem];
Это должно заботиться о том, чтобы подтолкнуть ваш взгляд.NavigationController автоматически покажет кнопку «назад».
В AppDelegate вы создадите navigationController и сообщите ему, каким представлением будет rootViewController, например:
ViewController1 *vc1 = [[ViewController1 alloc] init];
mainNavigationController = [[UINavigationController alloc] initWithRootViewController:vc1];
Надеюсь, это поможет!