0
我有一個基於文檔的應用程序,並在文檔視圖中,我有一個NSSearchField。在搜索字段中,我啓用了菜單,我將顯示該菜單,並將菜單項與相關操作關聯起來。其中一個菜單項稱爲「匹配大小寫」。我希望能夠在此菜單項下放置(並移除)檢查。當我嘗試這樣做時,菜單不顯示檢查。NSSearchField菜單未更新
-(IBAction)searchMenuMatchCase:(id)sender {
NSMenuItem *smi = [searchMenu itemWithTitle:@"Match Case"];
if (searchCaseSensitive) {
searchCaseSensitive = false;
[[searchMenu itemWithTitle:@"Match Case"] setState:NSOffState];
} else {
searchCaseSensitive = true;
[[searchMenu itemWithTitle:@"Match Case"] setState:NSOnState];
}
[searchMenu update];
NSLog(@"SM State %ld",[smi state]);
}
的代碼被執行,我也得到顯示狀態從0到1比0到1的日誌信息,但從來就沒有旁邊的菜單項的檢查。當我在調試時查看菜單項對象時,在切換之前,我看到「狀態」值設置爲0和1。
任何關於我失蹤的建議?
是的,你應該使用'validateMenuItem'方法。這是因爲彈出菜單時,實際使用的菜單不是您的IBOutlet直接控制的菜單,而是其副本。 –