我已經通過Interface Builder創建了一個NSMenu。一位名爲showPreferencesPanel方法的菜單項,這是在KBAppController.m定義的:@selector - 如何從另一個類調用方法?
-(void)showPreferencesPanel {
//something
}
現在,我必須重新建立一個沒有IB的菜單......所有程序。 StatusMenu.m是處理所有這些的類,我無法弄清楚我應該設置的目標,以便從另一個類中調用方法。
創建該類的實例不起作用!菜單項灰顯。
StatusMenu.m
KBAppController *kbAppController = [[KBAppController alloc]init];
NSMenuItem* preferencesItem;
[preferencesItem setTarget:kbAppController];
preferencesItem = [[NSMenuItem alloc] initWithTitle:@"Preferences…" action:@selector(showPreferencesPanel) keyEquivalent:@""];
編輯:------------------------------- ------------
這裏是使用KBAppController類的對象的更新代碼。好消息是,首選項菜單項已啓用,但它仍然沒有調用該方法在KBAppController.m :(
KBStatusMenu.m
@synthesize kbAppController = _kbAppController;
someMethod {
NSMenuItem* preferencesItem;
preferencesItem = [[NSMenuItem alloc] initWithTitle:@"Preferences…" action:@selector(showPreferencesPanel) keyEquivalent:@""];
[preferencesItem setTarget:self];
}
- (void)showPreferencesPanel {
NSLog(@"in 1");
[_kbAppController showPreferencesPanel];
}
KBAppController.m
-(void)showPreferencesPanel {
NSLog(@"in 2");
//something
}
這是否打印出任何東西? –
是的,它達到了「1」,但從來沒有「2」。 _kbAppController爲空!我刪除了屬性和@synthesize語句,現在它可以工作。 – janeh