2015-01-21 2 views
2

Как переключаться между несколькими представлениями с помощью контроллера вида (с помощью IBAction)?Переключение между представлениями с помощью NSViewControllers в OS X

Это код, который я написал до сих пор:

В файле интерфейса я сделал IBAction:

-(IBAction)Next; 

и в файле реализации я написал это:

- (IBAction)Next 
{ 
    SecondPopovercontrol *second = [[SecondPopovercontrol alloc] initWithNibName:nil bundle:nil]; 
    [self presentingViewController:second animated: YES completion:NULL]; // This is the step I am facing issues with 
} 

Мне не удалось это запустить. Имя двух контроллеров представления: WOMPopoverController и SecondPopovercontrol.

Ошибка:

«Нет видимых @interface для WOMPopoverController заявляет селектор, представляющий ViewController: анимированный: завершение»

Я новичок в StackExchange, так что если есть какие-либо несоответствия в моем вопросе, пожалуйста, сообщите я знаю. И, пожалуйста, расскажите мне, как решить эту проблему.

спасибо

ответ

3

presentingViewController является свойство UIViewController. Он содержит указатель на viewController, который представляет ed текущий viewController (или nil, если этот viewController не был представлен представлением viewController).

Что ты хотел сделать, это отправить presentViewController:animated:completion сообщение self:

[self presentViewController:second animated:YES completion:nil]; 

(это «настоящее», а не «представлены»)

Когда second представлен, это presentingViewController свойство будет установлено для этого самоуправления, а собственная позиция presentedViewController будет установлена ​​в second

Редактировать
Как отметил Джеф, я ошибочно предположил, что вы имеете дело с iOS. В OSX подход аналогичен. NSViewController имеет свойство presentingViewController и массив presentedViewControllers. Различные методы с изложением имеющихся у вас отличаются:

– presentViewController:animator: 
– presentViewController:asPopoverRelativeToRect:ofView:preferredEdge:behavior: 
– presentViewControllerAsModalWindow: 
– presentViewControllerAsSheet: 

В любом случае, я думаю, вы должны тщательно рассмотреть NSViewController documentation, чтобы убедиться, что вы используете правильный подход для правильной платформы (ваш ошибочный метод, кажется, происходит от iOS, а не OSX).

редактировать 2
Я сделал small demo app показывая различные презентации поведения для NSViewController на OSX, включая очень основной объект пользовательского аниматора.

+0

Довольно уверен, что он говорит о NSViewController ... – Jef

+0

@Jef - спасибо за указание, что вне - я обновил свой ответ, надеюсь, что я не просто сделал вещи более запутанными! – foundry

+0

@Jef Спасибо Jef Я имел в виду контроллер NSView. – KLMM