(这是与床单有关的典型事吗?)
我试图从我的主窗口显示一个自定义工作表(从父窗口的标题栏向下滑动的窗口).我想,我想做的就是标准,但是我找不到明确的例子或解释如何做到我想要的.
我想做什么:
>我的app delegate拥有主窗口,其中有一个用于打开“设置”表的按钮.
>“设置”表:
>在一个单独的NIB中.
>将文件所有者设置为类SettingsWindowController,它是NSWindowsController的子类
>当用户点击“设置”时,我正在尝试使用Apple的[示例代码] [1]
- (voID)showCustomSheet: (NSWindow *)window// User has asked to see the custom display. display it.{ if (!settingsSheet) //Check the settingsSheet instance variable to make sure the custom sheet does not already exist. [NSBundle loadNibnamed:@"SettingsSheet" owner: self]; //BUT HOW DOES THIS MAKE settingsSheet NOT nil? [NSApp beginSheet: settingsSheet modalForWindow: window modalDelegate: self dIDEndSelector: @selector(dIDEndSheet:returnCode:contextInfo:) contextInfo: nil]; // Sheet is up here. // Return processing to the event loop}
请原谅以下简单而众多的问题:
>当我调用loadNibname:owner:时,我不希望所有者成为自己,因为这使我的应用程序委托“MyCustomSheet”的所有者 – 这就是我的SettingswindowsController应该是什么.但是,我不知道如何使SettingswindowsController成为此方法的所有者.
>如果我的工作表选中了“在启动时可见”,则loadNibname:owner:立即将窗口显示为普通窗口,而不是从主窗口滑出的工作表.
>如果我的工作表没有选中“在启动时可见”,则beginSheet:modalForWindow:etc会导致“模态会话需要模态窗口”.我很确定这是因为我让Nib的主人自己(正如我已经提到的那样).
>在示例代码中,我不知道名为@“SettingsSheet”的Nib如何与实例变量settingsSheet“关联” – 但它们显然是相关的,因为代码首先检查:if(!settingsSheet)(我已标记)这个评论//但这怎么会使settingsSheet不是??)
感谢您耐心阅读所有这些!
解决方法 >创建SettingsWindowController的实例,使用initWithWindowNibname: >你不希望它在发布时可见. >见1. >您的实例变量将可用于SettingsWindowController 总结以上是内存溢出为你收集整理的objective-c – 如何从单独的NIB显示工作表全部内容,希望文章能够帮你解决objective-c – 如何从单独的NIB显示工作表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)