UIPickerView titleForRow не вызывается - просмотр с двумя сборщиками - PullRequest
0 голосов
/ 09 сентября 2010

В настоящее время я работаю над одним представлением с двумя представлениями выбора.
Я нашел что-то вроде:

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
if([thePickerView isEqual:pickerView ]){ 
    return [arrayNo count];
}
else if([thePickerView isEqual:pickerView2]){       
    return [arrayRootNote count];
}

else{
    return 0;
}

}  
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
 if([thePickerView isEqual:pickerView])
 { 
   return [arrayNo objectAtIndex:row];
}
else if([thePickerView isEqual:pickerView2]){       
    return [arrayRootNote objectAtIndex:row];
}

else{
    return [arrayRootNote objectAtIndex:row];
}

 NSLog(@"I am a called method"); 
}  

Что я хочу, это изменить заголовок каждого средства выбора (заполняемого двумя NSMutableArrays). Проблема заключается в том, что два средства выбора показывают «ArrayNo» окна выбора.

Я нашел с помощью отладчика (и NSLog), что метод titleForRow вообще не вызывается.
Любая идея? Заранее спасибо

Seraphin

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

Проблема решена:
viewForRow, мне нужно было изменить пользовательскую метку, которую я сделал:

- (UIView *)pickerView:(UIPickerView *)thePickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{

 CGRect rect = CGRectMake(0, 0, 188.25, 70.4);
 UILabel *label = [[UILabel alloc]initWithFrame:rect];
CGAffineTransform rotate = CGAffineTransformMakeRotation(3.14/2);
rotate = CGAffineTransformScale(rotate, 0.22, 1.7);

[label setTransform:rotate];
//label.text = [arrayNo objectAtIndex:row];           THAT was the error.

if([thePickerView isEqual:pickerView])                THAT is the solution.
{ 
 label.text = [arrayNo objectAtIndex:row];
   }
else if([thePickerView isEqual:pickerView2]){       
 label.text = [arrayRootNote objectAtIndex:row];
}

label.font = [UIFont fontWithName:@"Georgia" size:50];
label.textAlignment = UITextAlignmentCenter;
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeWordWrap;
label.backgroundColor = [UIColor clearColor];
label.clipsToBounds = YES;
return label ;
}
1 голос
/ 09 сентября 2010

Вы задали делегат / источник данных?

...