我有一個帶有NSTextField控件,確定按鈕和取消按鈕的模式表。確定按鈕綁定到我的控制器類中的一個名爲theSheetOK的操作方法。我也必將的NSTextField控制在我的控制器(文件的所有者)命名FOO的的NSString成員,我用鍵 - 值綁定來讀取文本值用戶輸入的文本字段(即模型的關鍵路徑的綁定檢查員設置爲foo)。確定按鈕的行爲與單擊鼠標時的行爲不同
如果輸入文本並且用戶通過鍵盤點擊確定按鈕,所有工作都很好。當我跟蹤foo與的值NSLog在theSheetOK處理程序我看到了我剛纔在文本字段中輸入的值。
然而,當我用鼠標單擊OK按鈕,FOO的價值被記錄爲空,也當我點擊確定按鈕,文本字段控制抓住重點,我鍵入的文本顯示爲選中狀態。任何想法出了什麼問題?
@interface MyController : NSWindowController {
@private
NSString *foo;
}
@property (copy, readwrite)NSString* foo;
-(IBAction) theSheetOK:(id)sender;
-(IBAction) theSheetCancel:(id)sender;
@end
...
#import "MyController.h"
@implementation MyController
@synthesize foo;
-(IBAction) theSheetOK:(id)sender
{
NSLog(@"theSheetOK");
NSLog(@"foo= %@", foo);
...
NSWindow* theSheet = [self window];
[NSApp endSheet:theSheet returnCode: NSOKButton];
[theSheet orderOut:nil];
相信會比一個更好的解決方案*不斷更新*是「端編輯」的操作方法是,確定按鈕目標。看到這個問題的示例實現:http://stackoverflow.com/questions/9951255/cocoa-avoiding-updates-continuously-in-control-binds – trojanfoe 2012-03-31 08:38:44