我有两个笔尖WindowA
和WindowB
这两个笔尖都是在我启动程序时创建的。我试图从与WindowA
笔尖关联的类中以编程方式访问WindowB
的属性。
我目前正在做的是在WindowA
中创建一个WindowB
的对象,如下所示:
WindowA* winA = [[WindowA alloc] initWithNibName: @"WindowA" bundle:nil];
这不起作用,我怀疑我正在做的只是创建WindowA
的新实例而不使用当前的实例。
我的WindowA.h
看起来像这样:
@interface WindowA : NSViewController{
IBOutlet NSButton* aButton;
}
@property (assign) IBOutlet NSTableView* aTableView;
-(IBAction) buttonPress: (id)sender;
-(void) setColor;
我的WindowA.m
看起来像这样:
#import "WindowA.h"
@synthesize aTableView;
-(void) dealloc{
[aTableView release];
}
-(void) awakeFromNib {
}
-(id) init{
self = [super init];
if (self){
aTableView = [[NSTableView alloc] init];
}
return self;
}
-(IBAction) buttonPress: (id) sender;
{
[aTableView setBackgroundColor: NSColor.blueColor];
}
-(void)
我的WindowB.h
看起来像这样:
@interface WindowB : NSViewController {
NSButton* bButton;
}
@property (nonatomic) WindowA* winA;
-(IBAction) buttonClick :(id) sender;
我的WindowB.m
看起来像这样:
#import "WindowB.h"
-(void) dealloc {
[winA release];
}
-(void) awakeFromNib {
}
-(id) init {
WindowA* winA = [[WindowA alloc] initWithNibName: @"WindowA" bundle:nil];
}
-(IBActon) buttonClick :(id) sender {
winA.setColor;
}
我想要做的就是从WindowA
访问WindowB
,但我似乎无法弄明白该怎么做。
答案 0 :(得分:0)
WindowA* winA = [[WindowA alloc] initWithNibName: @"WindowA" bundle:nil];
上面的行不起作用,因为你正在调用WindowA类的initWithNibName()并且没有写入。所以在两个控制器类中添加这些行 - -
@implementation your_controler_name
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
从windowB访问windowA的属性---首先在windowB类中创建windowA的对象(在创建时),然后使用点运算符(即yourObj.propertyName)访问该属性。