Cocoa如何在不使用Matrix的情况下设置单选按钮状态

时间:2016-11-01 14:46:06

标签: macos cocoa radio-button

不使用矩阵我如何设置按钮的状态?!它曾经很容易用矩阵但现在在10.8和矩阵的折旧我不知道如何在窗口加载时设置单选按钮的状态。

这里我查看是否将变量(p.status)设置为“Pending”,如果是,我想要单选按钮(在IB中链接到“pending”)将其状态设置为“1”< / p>

让我疯了!!!

在我的.h

 IBOutlet NSButton *pending;

在我的.m

if([p.status isEqualToString:@"Pending"]){
   //pending.state  = 1; Doesn't work
   //[NSButtonCell:pending [setstate:NSOnState]]; Doesn't work
   //[(NSButtonCell *)pending.cell setstate(ON)]; Doesn't work
 }

1 个答案:

答案 0 :(得分:0)

这是适用于我的解决方案。我为IB中的每个单选按钮创建了唯一标识符&gt; Identity Inspector(“pendingButton”approvedButton“rejectedButton”)从单选按钮中移除了绑定到头文件中的IBOutlet NSButton。并实现了这段代码:

- (NSView *)tableView:(NSTableView *)table_view viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {  
    Proposal *p = [list objectAtIndex:row];  
    NSString *identifier = [tableColumn identifier];  
    NSString *holdingValue;  

    NSTableCellView *cell = [table_view makeViewWithIdentifier:identifier owner:self];  
    if([identifier isEqualToString:@"status"]){  
        if(p){  
            for (NSView *subview in cell.subviews) {  
                if (![subview isKindOfClass:[NSButton class]]) continue;  

                if ([subview.identifier isEqualToString:@"pendingButton"])  
                    [(NSButton *)subview setState:[p.status isEqualToString: @"Pending"] ? NSOnState : NSOffState];  
                else if ([subview.identifier isEqualToString:@"approvedButton"])  
                    [(NSButton *)subview setState:[p.status isEqualToString: @"Approved"] ? NSOnState : NSOffState];  
                else if ([subview.identifier isEqualToString:@"rejectedButton"])  
                    [(NSButton *)subview setState:[p.status isEqualToString: @"Rejected"] ? NSOnState : NSOffState];  
            }  
        }  
    }else if ([identifier isEqualToString:@"clientAccessPoint"]){  
        holdingValue = [p valueForKey:identifier];  
            if (!holdingValue){  
                cell.textField.stringValue = @"N/A";  
            }else{  
                cell.textField.stringValue = [p valueForKey:identifier];  
            }  
    }else{  
    cell.textField.stringValue = [p valueForKey:identifier];  
    }  
    return cell;  
}