从另一个访问一个笔尖的属性

时间:2014-07-07 19:55:26

标签: objective-c macos cocoa nib

我有两个笔尖WindowAWindowB这两个笔尖都是在我启动程序时创建的。我试图从与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,但我似乎无法弄明白该怎么做。

1 个答案:

答案 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)访问该属性。