2012-01-17 8 views
2

세그먼트 컨트롤을 사용하여 새로운 데이터 배열로 2 개의 UIPickerViews를 다시로드하려고합니다.UIPickerView가 스크롤 할 때까지 다시로드되지 않습니다.

내 문제는 선택기에서 위 또는 아래로 스크롤 할 때까지 새 배열이 표시되지 않는다는 것입니다 (이전 데이터는 한 번 보이지 않게됩니다). 내가 reloadAllComponents 메서드를 사용하여 행운을 시도했다.

//Segment Control 
-(IBAction)unitType:(id)sender { 
    if([sender selectedSegmentIndex]==0){ 
     NSLog(@"unitType change 1"); 
     NSLog(@"before values = %@",units); 
     [units removeAllObjects]; 
     [units addObject:@"in"]; 
     //etc. 
     [self.inputUnits reloadAllComponents]; 
     NSLog(@"current values = %@",units); 
    }else { 
     NSLog(@"unitType change 2"); 
     NSLog(@"before values = %@",units); 
     [units removeAllObjects]; 
     [units addObject:@"in^3"]; 
     //etc. 
     [self.inputUnits reloadAllComponents]; 
     NSLog(@"current values = %@",units); 
    } 
} 

IB는 위임 및 데이터 소스 모두에 대한 파일의 소유자까지 유선이 UIPickerViews 있습니다 여기에 같은 코드가 모습입니다.

+0

"NSLog (@"% @ ", self.inputUnits);'"('null')? –

+0

예. 맞습니다. –

+3

NSLog의 힘을보십시오! – NJones

답변

5

inputUnits 속성에 UIPickerView을 연결하지 않았습니다. 따라서 -reloadAllComponents에 대한 호출이 nil으로 전송되며 pickerView가 새로운 것을 표시하려고 할 때만 업데이트됩니다 (스크롤 할 때).

관련 문제