我有一個基于單元格的 NSTableView,它在第一列中包含一個復選框。一切都顯示并且似乎正常運行,除了復選框操作的處理,看起來像這樣:
- (IBAction)ActiveCheckboxAction:(id)sender {
// Do stuff with the checkbox
}
我驚訝地發現,當呼叫 ActiveCheckboxAction 時,sender 指向 table view;不是復選框。為了解決這個問題,我正在尋找一種從當前選定行訪問復選框的方法,所以我修改了代碼,如下所示:
- (IBAction)ActiveCheckboxAction:(id)sender {
NSTableCellView *cellView = [tableView viewAtColumn:0 row:[tableView selectedRow] makeIfNecessary:NO];
NSButton *checkBox = [[cellView subviews] objectAtIndex:0];
// Do stuff with the checkbox
}
在這里,cellView 始終為零,所以我猜測 viewAtColumn 僅適用于基于視圖的表視圖。在檢查表格視圖時,我可以看到 _datacell 中第一列的復選框被正確描述為(NSButton *),但我不知道如何訪問此單元格以訪問復選框。
兩個問題:為什么發件人會指向表格視圖?我該怎么做才能從選定的行中獲取復選框?
謝謝!
uj5u.com熱心網友回復:
為什么發件人會指向表格視圖?
發送者是控制元件,在本例中是表視圖。NSTableView是 的子類NSControl。
我該怎么做才能從選定的行中獲取復選框?
復選框單元格[sender selectedCell]位于操作方法中。
而不是你可以使用的動作方法tableView:setObjectValue:forTableColumn:row:。物件值是復選框的狀態,如NSNumber。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456805.html
