2014-07-08 55 views
0

我有一个全局变量,称为NSTableView *dataTableViewGlobal;,我已经存储在一个称为g的C++结构。全球变量越来越dereferanced

我有一个NSViewController的子类,名为Window,它有一个与它关联的笔尖,并在我的程序加载时创建。眼下Window.h看起来是这样的:

@interface Window : NSViewController{ 

    IBOutlet NSButton* button; 

} 

@property (retain, readwrite) IBOutlet NSTableView *dataTableView; 

-(IBAction) click :(id) sender; 

Window.m看起来是这样的:

@synthesize dataTableView; 

-(void) awakeFromNib { 

    g->dataTableViewGlobal = self.dataTableView; 
    [g->dataTableViewGlobal setBackgroundColor: NSColor.redColor]; 
} 

-(IBAction) click :(id) sender { 

    [ g->dataTableViewGlobal setBackgroundColor: NSColor.blueColor]; 

    return; 
} 

我目前有(除了使用全局的变量)的问题是,我能够改变的颜色NSTAbleView是我的笔尖的一部分awakeFromNib使用dataTableViewGlobal,但是当我尝试更改click中的颜色时,没有任何反应。

我打算做的是在与Window同时创建的其他笔尖中使用全局变量。我更愿意做的事情是拥有Window的对象,其中包含我在代码中需要的Window的当前实例,但我无法弄清楚如何执行此操作。

回答

0

问题可能是您的IBAction没有正确连接到按钮。所以只要确保它应该正确连接到按钮。

之后修改下面的操作方法: -

-(IBAction) click :(id) sender 
{ 
    g->dataTableViewGlobal = self.dataTableView; 
    [ g->dataTableViewGlobal setBackgroundColor: NSColor.blueColor]; 
} 
+0

我IBAction为优良。如果我在'click'中使用'dataTableView',一切都很好。 – zzz711

+0

你是否在你的动作方法中尝试这两行? g-> dataTableViewGlobal = self.dataTableView; [g-> dataTableViewGlobal setBackgroundColor:NSColor.redColor]; –

+0

在我的action方法中添加'g-> dataTableViewGlobal = self.dataTableView;'可以改变颜色,但我想在当前类的外部使用'dataTableViewGlobal',所以我不能将它设置为'self.dataTableView'。 – zzz711