2012-06-07 71 views
1

我正在製作我的第一個Mac OS X應用程序,並且遇到了問題。表格單元格視圖中的IBAction不會被觸發

我在我的窗口創建了一個NSTableView鏈接到一個NSArrayController,我想在停止編輯文本域單元格後調用方法。所以,我選擇了打電話的動作時結束的編輯,你可以在下面的截圖中看到:

enter image description here

後,我創建了一個IBAction爲它:

它生成的驗證碼在我AppDelegate.h:

- (IBAction)stopEditingHeaderNameCell:(id)sender; 

然後我編輯的IBAction爲在AppDelegate.m爲了表現出的NSLog消息的小區進行編輯時:

- (IBAction)stopEditingHeaderNameCell:(id)sender 
{ 
    NSLog(@"test"); 
} 

然而,當我停止按輸入或點擊另一個元素編輯單元格,沒有任何反應。我已經嘗試將此IBAction應用於NSTextField,並且它的工作原理完美,但它在應用於此文本字段單元格時不會調用IBAction。

任何人都可以幫助我解決這個問題嗎?

謝謝!

回答

1

這不是您在表格視圖中使用文本字段單元格執行此操作的方式。您需要讓您的應用程序委派表的委託(您可以將其連接到IB),然後實現controlTextDidEndEditing :.當您結束編輯時(通過退出單元格或單擊另一行或列),將調用此方法。

+0

謝謝你,它像一個魅力。現在我試圖獲取發送給此函數的NSNotification參數(obj)的一些屬性。我嘗試獲取[obj值]之類的信息,但出現如下錯誤:「 - [NSConcreteNotification key]:發送到實例0x7fcf90d66150的無法識別的選擇器」和 「處理鍵輸入時檢測到異常」。我怎樣才能捕獲像它的價值,行號和東西的信息,所以我可以根據其內容操作其行中的其他單元格? –

+0

[obj對象]會給你一個表視圖的引用,所以你可以使用[[obj object] selectedRow]來找出哪一行被選中。這一行:[[obj.userInfo valueForKey:@「NSFieldEditor」] string]將爲您提供新的字符串值。 – rdelmar

+0

儘管[[obj.userInfo valueForKey:@「NSFieldEditor」] string]正在成功返回新內容,但[[obj object] selectedRow]在用NSLog(@「%@」)打印時返回「(null) ,[tableView selectedRow]);'。 P.S .:我通過使用'NSTableView * tableView =(NSTableView *)[obj object]'將一個[obj對象]存儲在名爲tableView的變量中;' –

相關問題