首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonoMac BeginSheet问题

MonoMac BeginSheet问题
EN

Stack Overflow用户
提问于 2013-02-05 02:51:37
回答 1查看 279关注 0票数 0

我正在写一个MonoMac应用程序,而我正在为BeginSheet而苦苦挣扎。我对它有一些问题,并将其列出,希望这是所有这些问题中的一个共同问题。

我已经设法让我的BeginSheet将我的登录窗口显示为工作表,但是如果我在应用程序的属性中将应用程序的主界面设置为MainWindow,而不是MainMenu,那么BeginSheet什么也不做。我的委托也不会在工作表关闭后运行。我通过调用Close()从LoginDialogController中关闭LoginWindow。

这是我在MainWindowController上使用的代码:

代码语言:javascript
复制
public override void WindowDidLoad ()
{
    base.WindowDidLoad ();

    Dialogs.LoginDialogController loginDialog = new Dialogs.LoginDialogController();
    loginDialog.Window.IsVisible = false;

    NSApplication.SharedApplication.BeginSheet(loginDialog.Window, Window, delegate {
        // THIS NEVER RUNS
        mainTabView.SelectAt(1);
        mainToolbar.SelectedItemIdentifier = "hometoolbaritem";
    });
}

在我的另一个视图中,我使用了以下代码,它完全没有任何效果:

代码语言:javascript
复制
TypeDialogController typeDialog = new TypeDialogController();
typeDialog.Window.IsVisible = false;
// THIS CALL HAS NO EFFECT
NSApplication.SharedApplication.BeginSheet(typeDialog.Window, View.Window, delegate {
    // THIS WILL PROBABLY NOT RUN EITHER, EVEN IF THE SHEET SHOWS
});

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 22:23:29

将应用程序主接口切换到MainWindow时,不会调用WindowDidLoad()方法,因为该方法是MainWindowController的一部分,而不是MainWindow的一部分。

正常的事件顺序是这样的:

在应用程序的主UI

  • MainMenu.xib实例化AppDelegate

  • AppDelegate通知时启动

  • MainMenu.xib(FinishedLaunching通知委托方法是AppDelegate

  • AppDelegate通知)构造一个新的MainWindowController实例,并使用它来显示调用了WindowDidLoad WindowDidLoad(),并且您的代码运行

当您将主界面更改为MainWindow.xib时,会发生以下情况

  1. MainWindow.xib作为应用程序的主UI启动。也就是说,创建了一个MainWindow实例,但没有控制器来管理它,也没有应用程序委托

我不清楚您试图通过将主界面更改为MainWindow.xib来实现什么。也许,如果你解释一下你正在努力实现的目标,也许有人能帮上忙。

关于工作表的问题,很可能是您没有在LoginDialogController中正确关闭工作表。如您所见,仅仅调用Window.Close()是不够的,而且还会阻止显示更多的工作表。你需要这样做:

代码语言:javascript
复制
NSApplication.SharedApplication.EndSheet(this.Window);
this.Window.OrderOut(sender);
this.Window.Close();

您总是需要在对BeginSheet的调用和对EndSheet的调用之间取得平衡。

如果这不是您的问题,那么您需要展示如何在LoginDialogController中关闭工作表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14693470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档