所以我试图做这个练习,我需要为主窗口设置一个委托。目的是确保当用户调整窗口大小时,它总是宽度的两倍。目标C代表主要应用程序窗口
这是我AppController.h文件:
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject
{
NSWindow *windowWillResize;
}
@end
,这是我AppController.m文件:
#import "AppController.h"
@implementation AppController
- (id) init
{
[super init];
windowWillResize = [[NSWindow alloc] init];
[windowWillResize setDelegate:self];
return self;
}
- (NSSize) windowWillResize:(NSWindow *)sender
toSize:(NSSize)frameSize;
{
NSLog(@"size is changing");
return frameSize;
}
@end
不过,我可以删除行 [windowWillResize setDelegate:自我]。 因为我在Interface Builder中设置了委托,但我不确定这是为什么会起作用。如果windowWillResize知道我指的是主应用程序窗口,因为我正在执行一个全新的窗口,那么windowWillResize = [[NSWindow alloc] init];
我有一种感觉,我完全做错了。有人能指出我正确的方向吗?谢谢!
谢谢格雷厄姆和mouviciel。 我怀疑我的NSWindow创建不正确。 我不知道的是windowWillResize是一个内置函数。 所以这里是我的下一个问题,如果我没有使用接口构建器,是否有我的代码中指定我想appController是MainWindow的委托? – hahuang65 2009-08-11 08:54:19
哦,等等,现在我很困惑... windowWillResize如何知道控制主窗口?我在头文件中声明了它,但是没有将它连接到主窗口。我只将appController设置为委托... windowWillResize函数如何链接到实际调整大小? – hahuang65 2009-08-11 09:08:10
在Interface Builder中将appController设置为委托是将-windowWillResize连接到主窗口的方式。每当用户请求调整主窗口的大小时,窗口实例将发送一个消息[delegate windowWillResize:...],其中delegate = appController。 – mouviciel 2009-08-11 09:26:52