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

iOS tableview刷新显示数据 reloadData

在UITableViewController类里添加了一个tableview1,里面刷新界面数据的函数如下
-(void)refreshView:(BOOL)flag
{
    if (flag == YES)
    {
    [self getData:nil];
    [self.tableView1 reloadData];
    }
}

在B类中当数据改变时调用上边的函数
View1是上边类的实例
 [View1 refreshView:flag];


这样reloadData   虽然执行了 但是界面数据并没有更新,

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
等函数也都没有调用
求大神帮忙解决一下 --------------------编程问答-------------------- 你打断点看看有没有调用那个refreshView方法里面去,有没有重新刷新,有没有拿到数据。。。如果有重新设置,有拿到数据,就看看显示的时候是不是那里少些了什么??。。我记得以前我写的时候,不止在一个地方写了 [self.tableView1 reloadData];这句话 --------------------编程问答-------------------- 是没有刷新成功吧?是不是你在tableviewcell*函数中的值没改变呀 --------------------编程问答--------------------
引用 1 楼 willingYaTou 的回复:
你打断点看看有没有调用那个refreshView方法里面去,有没有重新刷新,有没有拿到数据。。。如果有重新设置,有拿到数据,就看看显示的时候是不是那里少些了什么??。。我记得以前我写的时候,不止在一个地方写了 [self.tableView1 reloadData];这句话

refreshView方法里的数据都改变了 只是reloadData方法调用的时候,没有调用- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section等函数
 reloadData函数都在哪些地方调用啊? --------------------编程问答-------------------- 可能是委托没有设置好 --------------------编程问答--------------------
引用 3 楼 lancer_fate 的回复:
Quote: 引用 1 楼 willingYaTou 的回复:

你打断点看看有没有调用那个refreshView方法里面去,有没有重新刷新,有没有拿到数据。。。如果有重新设置,有拿到数据,就看看显示的时候是不是那里少些了什么??。。我记得以前我写的时候,不止在一个地方写了 [self.tableView1 reloadData];这句话

refreshView方法里的数据都改变了 只是reloadData方法调用的时候,没有调用- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section等函数
 reloadData函数都在哪些地方调用啊?


没有调用那些函数,就看看delegate和data设置没有。。。reloadData函数在你需要重新刷新cell里面的内容的时候调用。 --------------------编程问答--------------------
引用 4 楼 yang8456211 的回复:
可能是委托没有设置好

我把代理设置的那个写到这个函数里面了,也没有调用那个函数啊
-(void)refreshView:(BOOL)flag
{
   [tableview1 setDelegate:self];
   [tableview1 setDatasoure:self];
   ...

}
大概这么写的,但是也不行啊,会不会因为在B类里的实例和我要刷新的界面不是同一个造成的? --------------------编程问答-------------------- 既然已经执行到 reloadData ,但tableview的代理方法 ... numberOfRowsInSection却没有被执行,最有可能的原因是tableview的delegate,datasource未指定。仔细检查有没有这两句

self.tableView1.delegate=self;
self.tableView1.datasource=self;

再者检查页面有没有如下代码的设置
self.tableview1.delegate=nil;
self.tableview1.datasource=nil;

这样也会让你先前的设置失效。

还有你上面中有提到“在B类中当数据改变时调用上边的函数”
view1在B类中是引用的关系? 像这种当一个对象发生改变时去通知另一个对象的场景。建议你使用delegate 或notification 来处理。
--------------------编程问答-------------------- 楼上已经说的很好了  --------------------编程问答--------------------

看下刷新函数调用的地方,看看不是在主线程中调用,刷新界面必须在主线程中进行。
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,