首先,我下描写叙述一下bug的发生情况:

在使用UIPickerView实现选择城市的时候。出现这样一个Bug
1、在iOS 6的系统上
2、Picker的数据上省份一栏选择了“香港”或者“澳门”这些没有二级数据的地区
3、然后滑动PickerView的二级选项。结果崩溃,并且不跳不论什么Delegate
4、这个问题在iOS 7或者更高系统的手机上是不存在的。

bug提示信息例如以下:

2014-07-28 19:46:00.711 BaiHe[1719:907] *** Assertion failure in -[UITableViewRowData rectForRow:inSection:], /SourceCache/UIKit/UIKit-2380.17/UITableViewRowData.m:1630

2014-07-28 19:46:00.915 BaiHe[1719:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect at invalid index path
(<NSIndexPath 0x1fb81370> 2 indexes [0, 0])'

*** First throw call stack:

(0x340ae2a3 0x3bd2e97f 0x340ae15d 0x34983ab7 0x35ee6ffb 0x35f04919 0x3606ec63 0x3623e8ef 0x35fd923b 0x35ff26ed 0x35fd3d89 0x35f9b3f5 0x36188a39 0x35ebf82f 0x35ebe293 0x35ec91e7
0x35ec8db3 0x35eb6801 0x35eb611b 0x37ba85a3 0x37ba81d3 0x34083173 0x34083117 0x34081f99 0x33ff4ebd 0x33ff4d49 0x37ba72eb 0x35f0a301 0x399cdf 0x26370)

libc++abi.dylib: terminate called throwing an exception



找了非常久。从网上网友处看到了一个解决方式,可是我试了一下。貌似缺少了些什么,所以我把解决方式的所有代码上传,希望能够帮助遇到相同问题的朋友。

解决方式:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//假设当前component中相应的数组为空。推断一些假设为空,返回1
if ([[self.pickerArray objectAtIndex: component] count] <= 0)
{
return 1;
} return [[self.pickerArray objectAtIndex: component] count];
} - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *label = (UILabel *)view; if (!label)
{
label = [[[UILabel alloc] initWithFrame: CGRectMake(0, 0, 320, 20)] autorelease];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = UITextAlignmentCenter;
label.adjustsFontSizeToFitWidth = YES;
label.numberOfLines = 2;
label.minimumFontSize = 8.0f;
} label.text = [[self.pickerArray objectAtIndex: component] count] ? [[[self.pickerArray objectAtIndex: component] objectAtIndex:row] objectForKey: @"hintValue"] : @""; //这里加上这段推断就可以
if ([[self.pickerArray objectAtIndex: component] count] <= 0)
{
label.userInteractionEnabled = NO;
}
else
{
label.userInteractionEnabled = YES;
} return label;
}

一个关于 UIPickerView 的 bug的更多相关文章

  1. ASP.NET MVC的Ajax.ActionLink 的HttpMethod="Get" 一个重复请求的BUG

    这段时间使用BootStrap+Asp.net Mvc5开发项目,Ajax.ActionLink遇到一个重复提交的BUG,代码如下: @model IList<WFModel.WF_Temp&g ...

  2. 最近提交一个mysql5.7的bug,提醒自己以后注意写SQL要规范

    最近帮朋友提交一个mysql5.7的bug , oracle mysql 的大神还回复我 , 以后注意书写sql规范 , 潜台词是不是不要给他们增加工作量 https://bugs.mysql.com ...

  3. 移动端一个奇怪的触摸bug

    这两天遇到一个很奇怪的bug,在移动端,一个页面里所有的input框都不能点击,我查了一下,里面的没有设置readonly属性,只要页面滚动一下就可以用了,而且,只要我在真机测试的时候,f12开发者模 ...

  4. STL 库中的陷阱----一个难以察觉的 bug

    请找出下面程序的 bug? int maxProfit2(vector<int> &prices) { int local[3] = {0}; int global[3] = {0 ...

  5. 一个因为粗心的Bug

    /** * 数据绑定,分页显示 */ private void updataMenu(final EditText search) { if(listwz==null) { return; } pag ...

  6. 表与表的关系把RD搞乱了,记一个Procedure中的bug

    就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...

  7. 记一个CRenderTarget中的BUG及解决办法

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...

  8. 一个毕生难忘的BUG

    记得以前接手过一个Java项目,服务器程序,直接让Jar在linux上跑的那种, 这个项目由两个web服务组成,也就是两条Java进程,主进程 xxx.jar,辅助进程 xxx_helper.jar. ...

  9. 一个比较难忘的BUG

    本学期开设了软件测试课程,在课上有讨论到bug,想到bug,真是很令人头疼的东西,相信每个程序都多多少少会有几个头疼的bug. 初学java时写过一个字符串判断的循环,之前学的C++字符类型用“==” ...

随机推荐

  1. 深度学习实战篇-基于RNN的中文分词探索

    深度学习实战篇-基于RNN的中文分词探索 近年来,深度学习在人工智能的多个领域取得了显著成绩.微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平 ...

  2. MongoDB实现数组中重复数据删除

    这个功能真的是写死我了,对于MongoDB一点都不熟悉,本来想使用spring与MongoDB的融合mongoDBTemplate,发现压根不是web项目,懒得配置那些配置文件,就使用最原始的数据库操 ...

  3. 学习英语的小习惯(IT版) 不断补充中~~~~~~

    对于一些英文单词的读音,包含各种类似于Linux,Maven,Python……这些单词,尽量第一时间去找到他们的标准或者地道的发音,不要随便读,以免后面发音很难纠正. 有道词典的屏幕取词和划词很好用, ...

  4. BZOJ 1041 数学

    思路: $x^2+y^2=r^2$$y=\sqrt{(r+x)(r-x)}$令$ d=gcd(r+x,r-x)$设A=$(r-x)/d$ $B=(r+x)/d$则$gcd(A,B)=1$$y^2=d^ ...

  5. DDL:对表___table___的相关操作

    1) 增加列 语法: alter table 表名 add 列名 类型(长度) 约束; 2) 修改现有列类型.长度和约束 语法:alter table 表名 modify 列名 类型(长度) 约束; ...

  6. javascript中五句话

    1.弹出框 ,小括号中就是弹出的内容 alert("我是一个弹出框");   2.控制台输出 小括号里面就是 控制台输出的东西 console.log("我是控制台输出的 ...

  7. (转)es6用法

    如何在浏览器中使用es6的语法呢? 方法一:引入文件相关js文件 <script src="traceur.js"></script> <script ...

  8. Android 解决toolbar标题不显示问题

    问题原因:toolbar的兼容性有问题 解决办法: setSupportActionBar(toolbar); toolbar使用步骤: 1.编写menu.xml 为了保持兼容需要这样写: andro ...

  9. 用JS解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    当用ajax异步时,返回JsonResult格式的时候,发现当字段是dateTime类型时,返回的json格式既然是“/Date(1435542121135)/” 这样子的,当然这不是我们想要的格式. ...

  10. Jquery- scrollTop()一个问题:

    在使用jquery的scrollTop()方法获取滚动条的位置时,发现变量名为top会有影响,代码: <!doctype html> <html> <head> & ...