2011-04-02 21 views
2

我有一個帶有NSTextField控件,確定按鈕和取消按鈕的模式表。確定按鈕綁定到我的控制器類中的一個名爲theSheetOK的操作方法。我也必將的NSTextField控制在我的控制器(文件的所有者)命名FOO的NSString成員,我用鍵 - 值綁定來讀取文本值用戶輸入的文本字段(即模型的關鍵路徑的綁定檢查員設置爲foo)。確定按鈕的行爲與單擊鼠標時的行爲不同

如果輸入文本並且用戶通過鍵盤點擊確定按鈕,所有工作都很好。當我跟蹤foo的值NSLogtheSheetOK處理程序我看到了我剛纔在文本字段中輸入的值。

然而,當我用鼠標單擊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]; 
+0

相信會比一個更好的解決方案*不斷更新*是「端編輯」的操作方法是,確定按鈕目標。看到這個問題的示例實現:http://stackoverflow.com/questions/9951255/cocoa-avoiding-updates-continuously-in-control-binds – trojanfoe 2012-03-31 08:38:44

回答

1

有時您需要按回車鍵確認更改爲可可綁定。我不確定,但有可能在您進入時同時執行更改和按鈕操作。

如果是這樣,請選擇您的NSTextField並標記選項「持續更新值」,以便正確同步事物。

enter image description here

+0

確實。這解決了我的問題。非常感謝。 – 2011-04-02 02:03:29

+0

@Ergun:不要忘記將此答案標記爲已接受(點擊投票計數下的複選標記)。這是我們在這裏說「謝謝」的另一種方式。它還可以讓其他人在搜索時知道你的問題已經解決。 – 2011-04-02 04:04:23

+0

謝謝喬希。做到了。 – 2011-04-02 04:17:02

相關問題