UIPicker - selectRow:12 inComponent:0 动画:NO 不工作(12 或超过 12)
Posted
技术标签:
【中文标题】UIPicker - selectRow:12 inComponent:0 动画:NO 不工作(12 或超过 12)【英文标题】:UIPicker - selectRow:12 inComponent:0 animated:NO not working (12 or more than 12) 【发布时间】:2014-01-15 08:05:48 【问题描述】:UIPicker 遇到了一个奇怪的问题。
我有UIPicker
,在那里我展示了美国的一些州。默认情况下,随机选择已经完成。为此,我使用以下语句。
[statesPicker selectRow:myRegPos inComponent:0 animated:NO];
然而,此语句仅在myRegPos <= 11
时有效。
当我有myRegPos >= 12
时,默认的第一个选项被选中。知道为什么会这样吗?
当myRegPos = 2
当myRegPos >= 12
为了确认我们有多少行,我在
中看到- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
我在这里打印返回的数字,它是 64。
知道为什么会这样吗?
标题我用
if ([tappedWhat isEqualToString:@"states"])
return [NSString stringWithFormat:@"%@", [[feedsStates objectAtIndex:row] objectForKey:[NSString stringWithFormat:@"NameS"]]];
我担心的是
当它与
一起使用时[statesPicker selectRow:3 inComponent:0 animated:NO];
为什么不用
[statesPicker selectRow:12 inComponent:0 animated:NO];
?
NOOOOOOO.....这真的让我发疯。知道出了什么问题吗?这是 2 天,但没有解决方案:(
【问题讨论】:
你在课堂上把这行放在哪里了:[statesPicker selectRow:myRegPos inComponent:0 animated:NO];
?
@holex :解析完成后我有这条线......我从网络服务带来随机数,我在解析后使用该数字......所以我有- (void)parserDidEndDocument:(NSXMLParser *)parser
[statesPicker selectRow:12 inComponent:0 animated:NO];
确保在配置pickerView后调用它。
@KudoCC :如果配置有问题,那么 [statesPicker selectRow:3 inComponent:0 animated:NO];
应该没有工作
好吧,上传你的项目是最快的解决办法。
【参考方案1】:
我假设您确保您的视图控制器实现了 UIPickerViewDataSource 和 UIPickerViewDelegate 协议。这 64 行是由您在 pickerView:numberOfRowsInComponent:
中定义的您是如何实现 titleForRow 方法的?你把所有的64个标题都放了吗?还是只实现了 12 个州?
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
【讨论】:
【参考方案2】:调用[statesPicker reloadAllComponents] ;
并确保feedsStates
在选择第12 行之前填充了数据。
NSAssert([[NSThread currentThread] isMainThread], @"error") ;
NSAssert(statesPicker != nil, @"error") ;
NSAssert([feedsStates count] >= 12, @"error") ;
[statesPicker reloadAllComponents] ;
[statesPicker selectRow:12 inComponent:0 animated:NO] ;
【讨论】:
@FahimParkar 更新我的答案,希望对您有所帮助。 对不起,这个 NSAssert 会做什么?我没有得到任何错误的措辞...只是提要计数的 NSLog...仍然是 64 .. & 仍然选择了第一行 @FahimParkar 你在主线程中调用它吗?更新答案以测试它是否在主线程中。 @FahimParkar 您可以创建一个演示并做类似的事情。如果仍然有错误,请上传项目。以上是关于UIPicker - selectRow:12 inComponent:0 动画:NO 不工作(12 或超过 12)的主要内容,如果未能解决你的问题,请参考以下文章