UIPickerView titleForRow 未调用 - 使用两个选择器的视图

发布于 2024-09-18 10:36:25 字数 922 浏览 1 评论 0原文

我目前正在处理带有两个 pickerView 的单个视图。
我发现了类似的东西:

- (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 填充)。 问题是两个选择器显示了 pickerView 的“ArrayNo”。

我发现调试器(和 NSLog)根本没有调用方法 titleForRow。
有什么想法吗?提前致谢

塞拉芬

I'm currently working on a single View with two pickerViews.
I've found something like :

- (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"); 
}  

What I want is to change the title of each picker (populated by the two NSMutableArrays).
The problem is that the two pickers are showing the "ArrayNo" of the pickerView.

I've found with the debugger (and the NSLog) that the method titleForRow is not called at all.
Any idea? Thanks in advance

Séraphin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你又不是我 2024-09-25 10:36:25

你设置了委托/数据源吗?

did u set delegate/data source?

一绘本一梦想 2024-09-25 10:36:25

问题已解决:
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 ;
}

Problem Solved :
viewForRow, I needed to change the custom label I did :

- (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 ;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文