2011-02-06 40 views
0

在我班的一個設置我NSStatusBar像:如何從其他類設置NSStatusBar標題?

 statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; 
    [statusItem setMenu:statusMenu]; 

是否有可能以某種方式調用是這樣的:

[statusItem setTitle:@"Waiting for data..."]; 

從另一個類?我想在用戶將信息輸入到由不同課程處理的偏好窗口中時更改標題。

我試圖讓一個類的函數:

+(void)ChangeTitel 

這是我從喜好類調用,它似乎可以調用它,但不知何故無法訪問statusItem對象。

任何想法? :)

回答

1

如果要更改另一個類的標題,該其他類需要具有對該狀態項的引用。

所以,你所要做的,就是寫一個返回這個狀態項的指針的方法,(它的一個實例變量吧?),然後調用該方法,以獲得NSStatusItem對象中的其他類。

我認爲你是新來的OOP編碼,從你的問題來看。一個類是一組代碼.. sorta,如果你[[Class alloc] init]爲類分配了一些內存,並在其中創建該類的新對象。一個新的實例。 如果你調用以 - 開頭的東西,那麼你正在調用一個實例方法,這需要你有一個實例。如果你用+調用某個東西,你就調用了一個沒有實例的CLASS方法,所以不能訪問你狀態項的實例變量。

- (NSStatusItem *)statusItem 
{ return statusItem; } 

不要忘了在你的頭文件中聲明該方法爲好,否則你將得到一個編譯器警告。

應該在管理狀態項的類中。 然後在你想使用的狀態項類:

#import "ManagerClass.h" // on top, so we have the method declared 

然後:

ManagerClass *someInstanceToIt = [[ManagerClass alloc] init]; 
[(NSStatusItem *)[someInstanceToIt statusItem] setTitle:@"New Title"]; 

如果經理類的實例是一個界面生成器插座,或之前已經創建的,則你不應該用alloc來做第一行] init]

如果您需要任何幫助,請發表評論。

+0

嘿,感謝您的幫助:)我還是新來的這個..所以我實現了 - (NSStatusItem *)statusItem在我的ManagerClass實現,也進入ManagerClass頭。仍然不能得到它來改變標題,必須仍然做錯了:) – samirah 2011-02-06 09:52:14