2016-11-01 1 views
0

매트릭스를 사용하지 않고 어떻게 버튼의 상태를 설정합니까?! 이전에는 행렬을 사용하는 것이 매우 쉬웠지만, 10.8과 행렬의 감가 상각에서는 윈도우가로드 될 때 라디오 버튼의 상태를 설정하는 방법을 모르겠습니다.코코아 매트릭스를 사용하지 않고 라디오 버튼 상태를 설정하는 방법

여기서 변수 (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> 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; 
} 
관련 문제