2014-07-08 118 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