作ios开发的经常会遇到一些诸如:修改tabbar/navgation bar背景之类的问题,这些问题看似小,但有时候会占据较多的时间来解决。
我把个人在最近项目上遇到的一些tips纪录下来,供以后使用。如有不正确的或是更好的方法,请大家指教。
- UITextField
在nib文件种,该控件 自动启用return功能启用后的效果是: 如果控件内没有输入,则return不可点。
- UITableView的响应
tableview所在的父view如果frame比tableview的小,那么,tableview上的点击事件会不响应。
addsubview后,子view的drawrect会调用一次
- UITabBar 样式自定义
我采用的是 [tabBar insertSubview:atIndex]方法。因为项目中的tabbar带有颜色,所以做了几个tabbar分别选中的图,点击的时候直接切换了贴上去。
- UITableView 多选
ios5以前要实现,比较麻烦,网上有教程实现。 从ios5开始,添加了是否允许多选的属性,非常方便。使用方法直接搜索文档即可。
- UITableViewCell 上的button
点击cell上Button触发动作,触发时往往需要获取数据源的一些信息,这些信息往往存储在array中,通过cell的位置来获取。如果设置button的tag为cell的顺序,这样方便获取数据,但是破坏了tableviewcell的重用机制。如果使用tableviewcell的重用机制,那么所有的button的tag势必都相同。 解决方法就是:设置重用,给button分配统一的tag,然后根据button.superview.superview来获取所在的cell(因为cell上的控件一般是加载在cell.contentview上,所以有两个suoerview),然后通过cell来获取indexPath,从而就知道点击的是哪个位置的button
- 自定义手动添加的NavigationBar
所谓手动添加,是直接加载NavigationBar而不是通过NavigationController。这时时要修改NavBar上按钮的式样通过navbar.topitem
- NSNotificationCenter
消息机制是用于刷新UI等比较有用,常见的方式。添加的时候有一个object参数,可以指定observer只接受object发出的消息。如果object为nil。那么observer就接受任何对象发出的响应消息
- JSON字符串解析: Illegal start of token []
使用SBJson库解析某个json字符串,出现如上错误。使用ios5提供的NSJSONSerilization出现garbage end。猜测是返回的结果中最后}后面有看不见的脏数据。服务器怎么修改不知道,刚好那天相关人员也不在。最后通过找到最后一个}的位置将字符串截取出来再解析。
- 添加view到statusBar位置
直接添加是无论怎么指定frame都添加不上的。网上有通过subclass UIWindow来做,那个没尝试过。因为项目中只是涉及一小部分,采用的是先设置stausBar隐藏,然后再添加view的方式
2012-06-18 11:45:27
先总结如下,以后有,再补充。