2014-03-13 27 views
3

當用戶正在編輯桌面視圖上的文本字段並決定點擊窗口的關閉按鈕時,他/她所做的更改不會被保存。我如何強制tableview(基於視圖)結束編輯(不中止編輯)?在NSTableView上進行結束編輯(基於視圖)

+0

當我在故事板中使用故事板並在我的項目中嵌入模態表單時,我無法爲答案工作。我最終將我的'viewController'作爲表格單元視圖內'NSTextField'的委託。然後當單元格視圖的文本字段觸發'control(_control:NSControl,textShouldBeginEditing fieldEditor:NSText) - > Bool'和'control(_control:NSControl,textShouldEndEditing fieldEditor)時,我切換了工作表'OK'按鈕的'isEnabled'標誌:NSText) - > Bool'。這並不漂亮,但它強制用戶結束編輯單元格的文本,然後確認它們的輸入。 – Todd

回答

1

最簡單的方法是爲您的窗口分配一個委託並響應NSWindow-windowShouldClose:委託方法。其中,調用-makeFirstResponder:使窗口本身成爲第一響應者,注意它給出的BOOL答案。您應該返回任何-makeFirstResponder:答案作爲代表...ShouldClose:消息的答案,因爲它可能無法結束編輯/退出第一響應者。假設成功,它將結束編輯並觸發您在實際關閉之前設置的任何操作/綁定機器。這是可行的,因爲NSTableView和它在基於視圖模式下使用的視圖是NSControl的子類,並通過結束編輯等自動處理響應者狀態更改等。希望這有助於。

相關問題