Помогите как загрузить UINavigationViewController из UIViewController - PullRequest
0 голосов
/ 20 июня 2009

Здесь опять дурацкий вопрос :( Я пытаюсь создать пример приложения, которое загружает UIViewController, когда приложение загружается, и представление содержит кнопку для загрузки UINavigationViewController.

Теперь я создал проект с помощью «Window-Application» и добавил «RootViewController» в проект с .m, .h и .xib.

Затем я добавил вид и кнопку в файл "RootViewController.xib", и он работает нормально. После этого я добавил файл «UIViewController subclass» с именами «NavViewController» с файлами .h, .m и .xib.

Также я добавил - (IBAction) buttonPressed: (id) функция отправителя в классах "RootViewController" для загрузки NavigationViewController.

Вот код «buttonPressed:».

- (IBAction)buttonPressed:(id)sender {
    NavViewController *navViewController = [[NavViewController alloc] initWithNibName:@"NavViewController" bundle:nil];
    self.navController = navViewController;
    [self.view insertSubview:navViewController.view atIndex:0];
    [navViewController release];
}

Когда я "строю и работаю", изначально он работает нормально, пока я не нажму кнопку. Когда я нажимаю кнопку, программа завершает ее.

Что я делаю не так? Пожалуйста, помогите ...

Спасибо.

Ответы [ 3 ]

1 голос
/ 20 июня 2009

Что ты делаешь не так? Разработка вашего приложения нестандартным способом - вы не должны этого делать - за это отвечает NavigationController!

Зачем вам кнопка, которая добавляет контроллер навигации? - это идет вразрез с рекомендациями по пользовательскому интерфейсу. Мне было трудно сначала разобраться с рекомендациями по интерфейсу, но вы действительно должны это сделать, потому что это сделает ваше приложение намного более удобным.

Если вам нужен контроллер навигации, добавьте его в представление для начала или создайте новый вид с помощью контроллера навигации. Если честно, попробуйте, и вы почувствуете себя намного лучше.

Если вам действительно нужна кнопка, которая добавляет контроллер навигации в окно, сделайте следующее:

  1. Сохраните ссылку на AppDelegate в своем коде
  2. Используйте эту ссылку и передайте свой текущий контроллер представления методу reloadMainViewWithNavBar: (UNViewController *) viewController
  3. Этот новый метод должен удалить старый mainViewController и создать NavigationController использование вашего viewController в качестве корневого контроллера представления
  4. добавить представление контроллера навигации в представление окна
0 голосов
/ 20 июня 2009

В дополнение к упомянутому выше исправлению, вы действительно хотите создать первый контроллер представления, содержащийся в контроллере навигации, но скрывайте панель навигации, пока нажатие кнопки не заставит ее отобразиться. Вы не можете легко добавить навигационный контроллер в ваше представление.

0 голосов
/ 20 июня 2009

navController не имеет установленного представления в кончике. Контроллер UINavigation нуждается в корневом представлении. В кончике подключите контроллер навигации к другому контроллеру представления.

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