Use*_*234 20 macos cocoa objective-c
我试图改变我的Windows内容,从其他类,这是NSViewController的子类.我正在尝试下面的代码,但它没有做任何事情.
[NSApplication sharedApplication]mainWindow]setContentView:[self view]]; //code in NSViewController
[NSApplication sharedApplication]mainWindow] // returns null
Run Code Online (Sandbox Code Playgroud)
我试着补充一下
[window makeMainWindow];
Run Code Online (Sandbox Code Playgroud)
在App Delegate类中,但它无济于事.
我错过了什么?
PS我也在使用下面的代码来调用我班级中的任何委托函数,
[(appDelegate *) [[NSApplication sharedApplication]delegate]MyMethod];
Run Code Online (Sandbox Code Playgroud)
但我想知道有没有更好的东西,没有导入委托类.像这样的东西
[[NSApplication sharedApplication]delegate]MyMethod];
Run Code Online (Sandbox Code Playgroud)
(它发出警告)
Mau*_*lly 37
如果应用程序的nib文件尚未完成加载,接收者未处于活动状态,或者应用程序被隐藏,则此方法可能返回nil.
我刚刚创建了一个快速测试应用程序,我放置了以下代码:
NSLog(@"%@", [[NSApplication sharedApplication] mainWindow]);
Run Code Online (Sandbox Code Playgroud)
进入我的applicationDidFinishLaunching:aNotification
方法,并进入一个动作方法,我连接到我的应用程序的主窗口中的按钮.
在启动时,它mainWindow
是零,但当我点击按钮(一切都启动并运行并显示)后,mainWindow
不再是零.
NSApplication
提供您可能对您有用的其他方法:
- windows
- 所有窗户的阵列;– keyWindow
- 给出接收键盘输入(或零)的窗口;– windowWithWindowNumber:
- 返回与窗口编号对应的窗口 - 如果您知道要替换其内容的窗口编号,则可以使用此窗口;– makeWindowsPerform:inOrder:
- 向每个窗口发送消息 - 您可以使用它来测试每个窗口,看看它是否是您感兴趣的窗口.关于调用方法delegate
,你说什么给我一个警告.例如,这没有警告:
NSLog(@"%@", [[[NSApplication sharedApplication]delegate] description]);
Run Code Online (Sandbox Code Playgroud)
你收到的警告究竟是什么?你试图调用一个不存在的方法吗?
Bor*_*rzh 19
与MacOS战斗只是想出来了.
Apple的报价:
主窗口
属性
应用程序的主窗口.(只读)
讨论
当应用程序的故事板或nib文件尚未完成加载时,此属性中的值为nil.当应用程序处于非活动状态或隐藏状态时,它也可能是零.
如果您的应用程序中只有一个窗口(这是最常用的情况),请使用下一个代码:
NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
承诺它不会是零,如果应用程序有窗口.
归档时间: |
|
查看次数: |
42893 次 |
最近记录: |