Вы можете использовать следующий способ для перехода к другому окну:
ButtonClickEvent.Activated += (sender, e) => {
Console.WriteLine("Button Click");
NSWindow newWindow = new NSWindow();
newWindow.Title = "Second Window";
newWindow.SetFrame(new CGRect(500, 500, 300, 200),true);
// set be key window and be front
newWindow.MakeKeyAndOrderFront(null);
// close current window
View.Window.OrderOut(Self);
};
И если вернуться к предыдущему, также можете использовать этот способ.
========= =================== Update ============================== ====
Я поделюсь снимком экрана, чтобы объяснить это следующим образом:
Вы увидите, что есть два WindowController и два ViewControllers.
- Контроллер первого окна (MainWindow) -> Контроллер первого вида (ViewController)
- Контроллер второго окна (SecondWindow) -> Контроллер второго вида (SecondViewController)
Контроллер первого вида :
ButtonClickEvent.Activated += (sender, e) => {
Console.WriteLine("Button Push");
var storyboard = NSStoryboard.FromName ("Main", null);
var controller = storyboard.InstantiateControllerWithIdentifier ("SecondWindow") as NSWindowController;
// display
controller.Window.MakeKeyAndOrderFront(null);
// close current window
View.Window.OrderOut(Self);
};
Контроллер второго вида :
ButtonClickEvent.Activated += (sender, e) => {
Console.WriteLine("Button Back");
var storyboard = NSStoryboard.FromName ("Main", null);
var controller = storyboard.InstantiateControllerWithIdentifier ("MainWindow") as NSWindowController;
// display
controller.Window.MakeKeyAndOrderFront(null);
// close current window
View.Window.OrderOut(Self);
};
Эффект:
====================================== = Обновить ======================================
Открыть Main.storyboard с Xcode Interface Builder :
Проверить, есть ли * 10 53 * Идентификатор раскадровки устанавливается в проекте: