我正在为objective-c中的项目开发一个前端,我在获取类Window
的方法时遇到了一些麻烦,这是NSViewController
的一个子类,当从一个调用时完全执行不同的阶层。
我有一个名为Window
的类setColor
的方法,它改变了我的NSTableView
变量的颜色,该变量链接到我界面中的镶边滚动视图。我可以通过setColor
中的init方法调用这样的Window
方法来成功更改颜色:[self setColor :self];
然而,当我执行此[window1 setColor: window1]
window1
,Window
是我在类Door
中声明的类Window.h
的对象时,似乎没有任何事情发生,因为登上滚动视图保持不变。
我的@interface Window : NSViewController {
@public
IBOutlet NSTableView *dataTableView;
}
@property (retain) IBOutlet NSTableView *tableView;
- (IBAction)SetColor:(id)sender;
@end
文件如下所示:
Window.m
我的@synthesize tableView;
- (void) awakeFromNib {
// [self SetColor :self];
}
- (IBAction)SetColor:(id)sender;
{
NSLog(@"changing the color");
[self->tableView setBackgroundColor: NSColor.blueColor];
}
看起来像这样:
Door.h
@interface Door : NSViewController {
Window* window1;
}
-(IBAction)buttonPress:(id)sender;
@property (retain) Window* window1;
@end
看起来像这样
Door.m
-(void) dealloc{
[window1 release];
}
-(id)init{
self = [super init];
if(self){
window1 = [Window alloc];
}
-(IBAction)buttonPress :(id)Sender;
{
[window1 setColor: window1];
}
看起来像这样:
{{1}}
我正在使用Xcode 3.2,所以我不能使用ARC。
答案 0 :(得分:0)
window1 = [Window alloc]
不会加载Nib或情节提要,并将插座IBOutlet NSTableView *dataTableView
连接到其中的表格视图。
如果" Window"是一个视图控制器,您需要以更标准的方式初始化它和其中的插座。视图控制器需要正确的初始化或者出口是零,而在Objective-C中,如果你将方法发送到nil,它就什么都不做。