簡體   English   中英

NSTableView 單元格中復選框的 IBAction,意外發件人

[英]IBAction for checkbox in NSTableView cell, unexpected sender

我有一個基於單元格的 NSTableView,它在第一列中包含一個復選框。 一切都正確顯示,似乎 function,除了復選框操作的處理,看起來像這樣:

- (IBAction)ActiveCheckboxAction:(id)sender {
    // Do stuff with the checkbox
}

我驚訝地發現,當調用 ActiveCheckboxAction 時,sender 指向表視圖; 不是復選框。 為了解決這個問題,我一直在尋找一種方法來訪問當前選定行的復選框,所以我修改了代碼,如下所示:

- (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 *),但我無法弄清楚如何訪問此單元格以到達復選框。

兩個問題:為什么發件人會指向表視圖? 我該怎么做才能從所選行中獲取復選框?

謝謝!

為什么發件人會指向表格視圖?

發送者是控件,在本例中是表視圖。 NSTableViewNSControl的子類。

我該怎么做才能從所選行中獲取復選框?

復選框單元格是操作方法中的[sender selectedCell]

您可以使用tableView:setObjectValue:forTableColumn:row:代替操作方法。 object 值是復選框的 state 作為NSNumber

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM