iphone开发 UITableView数据刷新
通过button更改了数据源但是在tableview中还是显示以前的数据,得手动滑动屏幕才能刷新过来![tableviewreloadData];调用也不行、@各位大侠帮...
通过button更改了数据源但是在tableview中还是显示以前的数据,得手动滑动屏幕才能刷新过来!
[tableview reloadData];调用也不行、@ 各位大侠帮帮忙! 展开
[tableview reloadData];调用也不行、@ 各位大侠帮帮忙! 展开
展开全部
iPhone程序和传统的桌面程序的最大不同在于内存有限, 管理内存成了iPhone开发中时时刻刻需要谨记的事情。类似的功能在桌面程序上无非是将down下来的数据缓存于内存中,需要的时候画出来即可。 此法在iPhone上切不可行,虽然UITableViewCell可与reuse重复使用以节约内存使用量, 但是数据还是需要host在array或者dictionary中,必然导致程序实用大量内存儿崩溃退出。
还好,iPhone系统内置sqlite微型数据库, 这么好的查询插入引擎不善用那就是罪过了。。。
言归正传, 基本思路是这样的: 从服务器读取内容,以twitter为例,先创建消息数据表
create table public_timelines (id integer primary key autoincrement, user varchar(40),\
userurl text,body text, created real, created_string text,\
imageurl text, ordernum int, userid varchar(20), user_screenname varchar(40));
获取public timelines得到以xml形式存在的message条目,解析xml后将每条消息插入数据表, 写入成功后发送reload消息给table以重新填充表格单元内容
如果消息记录超过一条, 记得在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中返回消息记录 + 1, 因为最后一个cell需要实现 Get More …功能
就像上一步说的, 点击最后一个cell也就是Get More…时,在此从服务器获取 新的timelines, 将其解析再写入数据表中, 每次刷新时将数据表清空,否则显示的消息会越来越多:), Get More 工作状态大概时这样的
如此, 程序实用的内存非常小, 每一条消息内容都是在需要的时候从数据库文件中读取, 减小了内存使用量就增加了程序的稳定性, 这对于成功的软件来说是非常必要的。
这篇小文只是对这样一个实现技术做了简单的介绍, 其中还有很多细节需要考虑, 比如:对sqlite的封装,以便于使用; 采用NSURLConnection方式下载数据以及post数据的实现; 还有xml解析可以使用iPhone SDK本身的NSXML* 系列API 也可以使用libxml, 具体当然根据个人习惯来选择。 针对Twitter, 已经有很多很好的开源库可以直接使用,比如 TwitterEngine
还好,iPhone系统内置sqlite微型数据库, 这么好的查询插入引擎不善用那就是罪过了。。。
言归正传, 基本思路是这样的: 从服务器读取内容,以twitter为例,先创建消息数据表
create table public_timelines (id integer primary key autoincrement, user varchar(40),\
userurl text,body text, created real, created_string text,\
imageurl text, ordernum int, userid varchar(20), user_screenname varchar(40));
获取public timelines得到以xml形式存在的message条目,解析xml后将每条消息插入数据表, 写入成功后发送reload消息给table以重新填充表格单元内容
如果消息记录超过一条, 记得在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中返回消息记录 + 1, 因为最后一个cell需要实现 Get More …功能
就像上一步说的, 点击最后一个cell也就是Get More…时,在此从服务器获取 新的timelines, 将其解析再写入数据表中, 每次刷新时将数据表清空,否则显示的消息会越来越多:), Get More 工作状态大概时这样的
如此, 程序实用的内存非常小, 每一条消息内容都是在需要的时候从数据库文件中读取, 减小了内存使用量就增加了程序的稳定性, 这对于成功的软件来说是非常必要的。
这篇小文只是对这样一个实现技术做了简单的介绍, 其中还有很多细节需要考虑, 比如:对sqlite的封装,以便于使用; 采用NSURLConnection方式下载数据以及post数据的实现; 还有xml解析可以使用iPhone SDK本身的NSXML* 系列API 也可以使用libxml, 具体当然根据个人习惯来选择。 针对Twitter, 已经有很多很好的开源库可以直接使用,比如 TwitterEngine
展开全部
你的这个UITableView是通过addSubview的方式加上去的吧。它的超视图(superview)是什么?先把自己干掉,再把超视图干掉(release掉),就再重新分配两者空间,再reloadData就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (cell==nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(0, 0, 320, 40);
label.tag = 100001;
label.text = [TextArray objectAtIndex:indexPath.row];
[cell addSubview:label];
}else {
UILabel *label = (UILabel *[cell viewWithTag:100001];
label.text = [TextArray objectAtIndex:indexPath.row];
}
用这种方法,再reloaddata的时候页面是会刷新的
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(0, 0, 320, 40);
label.tag = 100001;
label.text = [TextArray objectAtIndex:indexPath.row];
[cell addSubview:label];
}else {
UILabel *label = (UILabel *[cell viewWithTag:100001];
label.text = [TextArray objectAtIndex:indexPath.row];
}
用这种方法,再reloaddata的时候页面是会刷新的
追问
我是在更该数据源的地方加 reloaddata吗1|?
再说我的table里面的是table的子页 我自己用IB画得!
请问应该怎么更改!
追答
恩,在数据更改的时候就reloaddata一次,用ib画的,数据填充也是用的数组或是字典,在你数据元素改变的时候就reloaddata
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我没有遇到这类问题,不如把代码贴出来看下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询