UINavigationController Push Представления

Извините - это может быть простой вопрос, я новичок в разработке для iPhone и все еще оборачиваюсь вокруг Views vs ViewControllers.

У меня есть NavigationViewController, и я могу нажать View, используя следующий метод в RootViewController, который подключен к элементу панели кнопок:

- (IBAction)switch:(id)sender {
        NSLog(@"Swith...");
        LibraryViewController *varLibraryViewController = [[LibraryViewController alloc] initWithNibName:@"LibraryViewController" bundle:nil];
        [[self navigationController] pushViewController:varLibraryViewController animated:YES];
    }

Я хочу вызвать этот же метод с помощью кнопки в том же представлении, которое загружено в данный момент. По сути, я хочу, чтобы кнопка «Панель» вверху вызывала тот же метод, что и кнопка в представлении. Мне было интересно, как вызвать метод в ViewController из представления, загруженного из этого viewController. Надеюсь, это имеет смысл.

Нужно ли создавать экземпляр RootViewController? Я бы подумал, что это будет уже осуществлено. Спасибо.

12.12.2008 03:57:32
3 ОТВЕТА
РЕШЕНИЕ

Ваш RootViewController должен иметь свой собственный файл xib. В этом xib RootViewController представлен объектом с именем «Владелец файла». Вы можете связать кнопки в представлении с владельцем файла так же, как вы можете связать вещи с RootViewController в MainMenu.xib.

1
13.12.2008 23:21:11
Ответ Бена также помог, но ваш ответ был более прямым к тому, что мне было нужно.
Sean 15.12.2008 14:39:56

Вы захотите объявить свой метод как IBAction в вашем заголовочном файле:

- (IBAction) myMethod: (id) sender;

Сохраните заголовок, затем переключитесь на Interface Builder. Щелкните правой кнопкой мыши на кнопке панели и перетащите из selectorтега на объект контроллера представления (возможно, владельца файла). Когда вы отпустите, вам должно быть предоставлено всплывающее меню с доступными действиями, которое myMethodдолжно быть доступно для выбора.

Если вы не получите это всплывающее окно, вам может потребоваться убедиться, что ваш класс «Владелец файла» установлен правильно: выберите «Владелец файла» в окне файла, затем выберите «Инструменты»> «Инспектор идентификации» в меню. В инспекторе введите класс вашего контроллера представления в поле Class.

1
12.12.2008 04:43:29

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

4
13.12.2008 23:19:11