2016-11-01 6 views
0

マトリックスを使用しないでボタンの状態を設定するにはどうすればいいですか?これは行列では非常に簡単でしたが、今では10.8と行列の減価償却では、ウィンドウがロードされたときにラジオボタンの状態を設定する方法がわかりません。Cocoa Matrixを使用せずにラジオボタンの状態を設定する方法

変数(p.status)が「保留中」に設定されていることを確認します。その場合は、ラジオボタン(IBの「保留中」にリンクされています)の状態を「1」に設定します。

運転中ナッツ!私.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 
} 

答えて

0

で私の.h

IBOutlet NSButton *pending; 

は、ここで私のために働いたソリューションです。 IB> ID 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; 
} 
関連する問題