簡體   English   中英

NSTableView中的NSButtonCell復選框始終獲取NSOffState。 為什么?

[英]NSButtonCell checkbox inside NSTableView is always getting NSOffState. Why?

嗨,大家好,我是Cocoa編程的新手,無論我正在檢查還是取消選中NSButtonCell(UI中的Check Box Cell都拖到NSTableView的單元格中),我總是得到NSOffState。 我有一個@property IBOutlet NSButtonCell * mySelection,已連接到相應的UI和以下代碼。

- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
MediaAComparar *media = [mediasRecesEnStock objectAtIndex:row];
NSString *identifier = [tableColumn identifier];

if ([identifier isEqualToString:@"seleccion"])
{
    if ([mySelection state] == NSOnState)
    {
        [media setValue:object forKey:@"seleccion"];
        NSLog(@"on state");
    }

    if ([mySelection state] == NSOffState)
    {
       [media setValue:object forKey:@"seleccion"];
        NSLog(@"off state");

    }

}

}

我從不執行NSOnState,我得到的唯一NSLog消息是:off state。 誰能給我些幫助嗎? 謝謝!!

如果您有一個插座(“ mySelection”)和多行,那么您認為插座連接到哪一行? (答案:沒有。您可能將其連接到原型單元,該單元從不顯示或直接使用。)

但是無論如何,您無需在設置狀態之前檢查其狀態。 假設其他代碼正確,則應該能夠執行以下操作:

- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    MediaAComparar *medium = [mediasRecesEnStock objectAtIndex:row];

    if ([tableColumn.identifier isEqualToString:@"seleccion"])
        medium.seleccion = object.booleanValue;
}

更少的代碼就是更好的代碼。

暫無
暫無

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

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