Как создать Navigation Controller для подключения контроллера основного вида к 2 настраиваемым контроллерам вида - PullRequest
0 голосов
/ 04 сентября 2011

Мне нужна помощь по созданию контроллера навигации, который загружает свой контроллер корневого представления в контроллер основного представления. Затем я хочу, чтобы в этом навигационном контроллере были две кнопки выбора (leftBarButtonItem и rightBarButtonItem), которые приведут пользователя к двум настраиваемым контроллерам представления (AboutViewController и SettingsViewController).

Мне удалось сделать это успешно, но вместо этого я создал 2 контроллера представления внутри MainWindow.xib со всеми кодами внутри AppDelegate.h и AppDelegate.m. Это, очевидно, не очень хорошая практика, особенно когда у вас много пользовательских контроллеров представления.

Спасибо.

1 Ответ

1 голос
/ 04 сентября 2011

Вы правы, что не рекомендуется создавать контроллеры представления в 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];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...