我在这个截图中设置了一个XIB:
替代文字http://emberapp.com/jxpx777/images/interface-builder/sizes/m.png
文件的所有者是我的主窗口控制器.XIB还负责创建一个对象,该对象充当MGScopeBar视图的委托.正如您在屏幕截图中看到的那样,范围栏代理具有IBOutlet
搜索字段的一个,以便它可以作为委托流程的一部分将其作为额外视图返回.
我遇到的问题是当查询附件视图的委托对象时,它IBOutlet
NSSearchField
是零.我很确定这与创建对象的顺序,IBOutlets有线等有关,但我只是有点迷失在过程中我可以期望搜索字段存在的位置以便范围栏代表可以正确引用它.
提前感谢任何指针.
我正在XCode4中编写一个Cocoa/Objective-C应用程序,我需要知道我的首选项面板何时打开.我需要一些像windowDidBecomeKey这样的回调 ; 我试图按照提供的解决方案这个问题,但也windowDidBecomeKey
还是windowDidExpose
表现为委托方法(但其他人一样windowDidLoad
,windowWillLoad
等做的).
为了明确我的意思,"不要作为委托方法出现",我的意思是当我开始输入方法名称时,它们不会显示在自动完成中.无论如何我确实尝试过定义它们,但它们从未被调用过.
做NSPanel
对象缺乏这些方法,或有更多的东西我有什么关系?
目前,我有一个界面PrefWindowController
:
PrefWindowController.h:
#import <Cocoa/Cocoa.h>
@interface PrefWindowController : NSWindowController
//Delegate methods like windowDidBecomeKey appear to not be available here
@end
Run Code Online (Sandbox Code Playgroud)
PrefWindowController.m:
@implementation PrefWindowController
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert setMessageText:@".."];
[alert runModal];
}
return self;
}
- (void)windowDidLoad
{
NSAlert *alert = …
Run Code Online (Sandbox Code Playgroud) 我有一个基于菜单栏的应用程序,在单击图标时显示一个窗口.这一切在Mac OS X Lion上运行良好,但由于某种原因,Snow Leopard上的错误发生在较早版本的Mac OS X上.随时[TheWindowController window]
调用该方法停止,但应用程序仍在运行.因此,我不认为窗口只是零,它在某种程度上是腐败的.
我不知道为什么会发生这种情况,就像我说的那样,它只发生在Mac OS X Snow Leopard中.顺便说一句.我使用ARC,如果这很重要的话.
cocoa window nswindowcontroller automatic-ref-counting osx-lion
好的,这是我面临的一个奇怪的情况:
我有一个NSWindowController
子类,一个窗口,myMainWindow.xib
并AppDelegate.m
调用NSWindowController
这样的:
myWindowController* controller = [[myWindowController alloc] initWithWindowNibName:@"myMainWindow"];
[controller showWindow:self];
Run Code Online (Sandbox Code Playgroud)现在这是什么:
NO
,然后应用程序运行正常,窗口也显示正常.YES
- 在我设置它之后(并且为了JUST 1运行) - 它显示了一堆错误:2月17日16:35:45 DrKameleons-iMac.local MyApp [16903]:kCGErrorIllegalArgument:_CGSFindSharedWindow:WID 2409 Feb 17 16:35:45 DrKameleons-iMac.local MyApp [16903]:kCGErrorFailure:设置断点@ CGErrorBreakpoint()到记录时捕获错误.2月17日16:35:45 DrKameleons-iMac.local MyApp [16903]:kCGErrorIllegalArgument:CGSOrderFrontConditional:无效的窗口
窗户没有显示出来.
现在,如果我尝试重新运行应用程序(不更改任何内容,ARC仍然打开),窗口仍然不会显示.但是根本没有错误.:S
到底是怎么回事?关于如何解决这个问题的想法(并使窗口出现)?
提示:
cocoa objective-c nswindow nswindowcontroller automatic-ref-counting
我有一个NSWindowController
包含几个NSViewControllers
.我想普遍接受使用NSWindowController类的拖放事件,而不是被其他视图拦截NSTextView
(包含在a中NSViewController
)
如何判断NSTextView
忽略拖放事件?
drag-and-drop nstextview nsviewcontroller nswindowcontroller
我正在创建一个新的NSWindow:
- (void)newWindow
{
if (!_myWindow)
{
self.myWindow = [[myWindowController alloc] initWithWindowNibName:@"myWindow"];
}
[self.categoriasView showWindow:self];
}
Run Code Online (Sandbox Code Playgroud)
但我希望在窗口离NSWindowController关闭时释放窗口对象:
- (void)windowWillClose:(NSNotification *)notification
{
}
Run Code Online (Sandbox Code Playgroud)
我试过[self.window setReleasedWhenClosed:YES]; 但窗口关闭后对象仍然存在.
你们中的任何人都知道在窗口关闭后如何释放NSWindow对象?
我非常感谢你的帮助
我正在尝试创建一个自定义模式窗口,这是我到目前为止的代码:
NSWindowController *modalSheet = [[NSWindowController alloc]
initWithWindowNibName:@"MyCustomWindow" owner:self];
[NSApp beginSheet:[modalSheet window]
modalForWindow:[self windowForSheet]
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
Run Code Online (Sandbox Code Playgroud)
窗口弹出正常,但它不是模态的,例如,您仍然可以对请求来自的父窗口执行操作.从NSDocument对象调用此方法.
我试过阅读:使用自定义表格
但是我不确定myCustomSheet
它是什么,因为它没有在任何地方声明.我假设它是一个NSWindow
实例变量.
我只是无法理解为什么它不是模态的.任何帮助将非常感激.谢谢
我有一个子类,当我按键盘上的 esc 键时,NSWindowController
我需要在其中放置代码以关闭关联。NSWindow
我发现在方法中keyDown:
esc 按钮没有被处理,所以在阅读了本网站和互联网上的其他问题后,我发现最好的解决方案是cancel:
在控制器中提供一种方法。事实上,这项工作,我重写了该cancel:
方法,NSLog
当我按 esc 键时,我放在那里的方法效果很好。
问题是,如果我NSLog
用一个简单的替换[self.window performClose:self]
,这不起作用,当我按下 esc 按钮时,什么也没有发生,并且会播放拒绝操作的标准系统蜂鸣声。我想念什么来简单地关闭我的NSWindow
代码?谢谢
我希望用户可以通过按ESC键关闭一个窗口,但我不能让它在这种特定情况下工作,按ESC键会触发错误声音("你不能那样做"macOS bloop)没有任何反应.
我正在创建NSWindowController的子类,它本身创建一个NSViewController子类的实例并在视图中设置它.两个控制器都有自己的xib文件.
NSWindowController:
final class MyWindowController: NSWindowController, NSWindowDelegate {
@IBOutlet weak var targetView: MainView!
let myVC: MyViewController!
var params: SomeParams!
override func windowDidLoad() {
super.windowDidLoad()
myVC = MyViewController(someParams: params)
myVC.view.setFrameSize(targetView.frame.size)
myVC.view.setBoundsSize(targetView.bounds.size)
targetView.addSubview(myVC.view)
}
override var windowNibName: String! {
return "MyWindowController"
}
convenience init(someParams params: SomeType) {
self.init(window: nil)
self.params = params
}
}
Run Code Online (Sandbox Code Playgroud)
NSViewController:
final class MyViewController: NSViewController {
convenience init(someParams params: SomeType) {
// do stuff with the params
}
override func viewDidLoad() {
super.viewDidLoad()
// …
Run Code Online (Sandbox Code Playgroud) macos cocoa first-responder nsviewcontroller nswindowcontroller
cocoa ×7
objective-c ×4
nswindow ×3
macos ×2
cocoa-sheet ×1
iboutlet ×1
keydown ×1
nspanel ×1
nstextview ×1
osx-lion ×1
window ×1
xcode ×1
xcode4 ×1