当前位置:编程学习 > wap >>

UITableView,你了解多少?


最近我总算把UITableView弄透彻了,以前自认为很熟,其实还是没有深入了解。

于是我总结了一些相关的问题,这些问题并不是冷门和偏门,而是非常实用的技术。很多人就算有一年经验了,因为不得其法,走了弯路,实现是实现了,但解决办法太山寨。


1.
一个UITableViewCell如何得到它的宿主UITableView对象?IOS7上他们的层次结构发生了什么变化?

2.
一个UITableView上有多个cell,那么除了你可以自定义cell以外,还有哪些内容是可以自定义的。这里友情提醒一下,还有表头可以自定义。那么,还有哪些呢?需要您再补充三个。


3.
UITableViewCell在ios6以及以前的版本上透明太容易了,那么在IOS7上如何透明?网上目前没有找到合适的方法,我原创了一种!

4.
如何通过代码直接滑到UITableView的底部?代码虽然一行可以搞定,但要给出这个代码的第二个参数,这是关键。

5.
UITableView如何获取不可视的所有UITableViewCell对象?

6.
UITableView如何获取可视的所有UITableViewCell对象?

7.
在什么情况下
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
这个事件不会执行。此时应该如何解决cell的单击响应?

8.
如何让UITableViewCell响应单击事件,而又不出现单击时的按下效果?

9.
对于分组UITableView,如何改变组与组之间的间距。

10.
由xib加载自定义UITableViewCell的时候,如何让cell复用?这个看似简单,很多人不进行实际操作是无法休会到xib复用的。有些人为了解决这个麻烦,直接用纯代码在UITableViewCell上创建控件达到自定义的效果。纯代码控制复用好弄些,但纯代码画出来的cell可读性差,没有用xib设计出来的直观和设计时的高效,也不便于后期维护。所以,这个问题是如何让xib创建的cell复用?所谓复用,就是cell在滑出屏幕的时候不释放,再滑入屏幕的时候不重绘。注意用retain是没有效果的。


如果你能在短时间内给出所有问题的答案,那你就真是熟悉UITableView了。
以上十个问题的答案,我相信先后会有一些人答出一部分,我会在贴子满3页后,相继给出大家没有回答上来的问题的答案。这里欢迎大家一起交流学习。QQ群37204383 UITableView UITableViewCell 透明 重绘 复用 --------------------编程问答-------------------- 好文章啊~支持支持 --------------------编程问答-------------------- 很多问题的解决方案是不唯一的,有的问题甚至有三种以上的不同答案。在解决问题的前提下,还要考虑代码是否优质。比如问题4的两个答案代码都是一行,可是他们的参数不同,那么就以参数少,参数容易构造为最佳代码。以不需要计算坐标为优质代码。

很多问题的答案代码其实就只一行,可是你是否能随手写出来?它们常常被人们忽视和淡忘。 --------------------编程问答--------------------
引用 2 楼 mwy654321 的回复:
很多问题的解决方案是不唯一的,有的问题甚至有三种以上的不同答案。在解决问题的前提下,还要考虑代码是否优质。比如问题4的两个答案代码都是一行,可是他们的参数不同,那么就以参数少,参数容易构造为最佳代码。以不需要计算坐标为优质代码。

很多问题的答案代码其实就只一行,可是你是否能随手写出来?它们常常被人们忽视和淡忘。
看起来很好玩的样子 --------------------编程问答-------------------- 楼主,,关于你写的UITableView有没有记录在博客啊,,发给链接学习学习呗 --------------------编程问答-------------------- 一看这些问题,就知道是个低手 --------------------编程问答-------------------- 回4楼:没有博客。

回5楼:是低手是高手跟你关系不大。这里只交流问题,不讨论别人的水平。如果你不屑于这些问题,不参与更好。看到你的这个回复,哥就默默低下头,不是哥的修养好,而是哥在找砖头。 --------------------编程问答-------------------- 我在等待着三页, --------------------编程问答-------------------- 顶过去,等着收藏 --------------------编程问答--------------------
引用 6 楼 mwy654321 的回复:
回4楼:没有博客。

回5楼:是低手是高手跟你关系不大。这里只交流问题,不讨论别人的水平。如果你不屑于这些问题,不参与更好。看到你的这个回复,哥就默默低下头,不是哥的修养好,而是哥在找砖头。




顶起 --------------------编程问答-------------------- 看到楼主回复5楼,感觉楼主装B不成被鄙视,很是恼羞,已经怒了都.....这个帖子永远也到不了3页 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ }

关于这个我遇到了一个问题,就是想在点击当前tableview中的cell后推入下一页面,用的pushviewController  但是点击之后不能进入。delegate  和下一页面的头文件也都导入了。求楼主解答  谢谢 --------------------编程问答-------------------- 我在等满3页了 --------------------编程问答--------------------
引用 12 楼 lyc_omg 的回复:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ }

关于这个我遇到了一个问题,就是想在点击当前tableview中的cell后推入下一页面,用的pushviewController  但是点击之后不能进入。delegate  和下一页面的头文件也都导入了。求楼主解答  谢谢


请您提供更多已排查因素、做了哪些努力?避免大家做无谓猜测。
导致你这样的问题的原因有多方面。比如:
1.不是导航模式,不能这样推出使用。
2. tableView处于编辑模式,该事件不能触发。
3. tableView未设置delegate=self
4.tableView前面被加了其它透明UIView
5.手势事件被阻塞了。请添加如下方法来过滤:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch --------------------编程问答--------------------
引用 14 楼 mwy654321 的回复:
Quote: 引用 12 楼 lyc_omg 的回复:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ }

关于这个我遇到了一个问题,就是想在点击当前tableview中的cell后推入下一页面,用的pushviewController  但是点击之后不能进入。delegate  和下一页面的头文件也都导入了。求楼主解答  谢谢


请您提供更多已排查因素、做了哪些努力?避免大家做无谓猜测。
导致你这样的问题的原因有多方面。比如:
1.不是导航模式,不能这样推出使用。
2. tableView处于编辑模式,该事件不能触发。
3. tableView未设置delegate=self
4.tableView前面被加了其它透明UIView
5.手势事件被阻塞了。请添加如下方法来过滤:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch


啊 我好像知道了,1,2,3保证没问题。关于第4条,我在-(void)loadView{}这个函数中  又添加了个UIView 然后加入视图,所以造成无法推入下一页面嘛即添加了UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
        self.view =view;
这块代码。是不是这个造成的问题? --------------------编程问答-------------------- 坐等答案中。。。 --------------------编程问答-------------------- 回15楼。问题应该就出在这里。 --------------------编程问答-------------------- 3 怎么弄的?
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,