iOS tableview调用reLoadData刷新后的数据比之前的少一条,根据重用机制,是不是刷新后的cell会多一个?
tableview调用reLoadData后,-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRow...
tableview调用reLoadData后,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法里面的cell是原来的cell,还是全都重新创建的?如果是原来的cell,那么假如我第一次初始化的时候有9个cell,reloaddata后只剩了8条数据要填到cell中,这时是不是会报错,如果报错如何处理?
我现在出现的问题是,tableview显示的是从服务器中读取到得数据,假如得到了9条数据,然后我在每一个cell中有一个按钮,点击事件是对对应的一组数据的标记进行修改,修改之后告诉服务器,服务器得到后,就会知道这组数据不会在发给客户端,然后客户端再请求一次数据,得到的应该是8条,然后reloaddata,但是reloaddata之后,运行到上述方法里的
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
这句的时候程序接到了终端信号,打断点检查,数据确实是8条,但是为什么会出错啊? 展开
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法里面的cell是原来的cell,还是全都重新创建的?如果是原来的cell,那么假如我第一次初始化的时候有9个cell,reloaddata后只剩了8条数据要填到cell中,这时是不是会报错,如果报错如何处理?
我现在出现的问题是,tableview显示的是从服务器中读取到得数据,假如得到了9条数据,然后我在每一个cell中有一个按钮,点击事件是对对应的一组数据的标记进行修改,修改之后告诉服务器,服务器得到后,就会知道这组数据不会在发给客户端,然后客户端再请求一次数据,得到的应该是8条,然后reloaddata,但是reloaddata之后,运行到上述方法里的
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
这句的时候程序接到了终端信号,打断点检查,数据确实是8条,但是为什么会出错啊? 展开
1个回答
展开全部
cell是View和你数据一点关系都没有,楼主概念不清楚啊。
cell的重用数量是根据出现在屏幕的数量决定的,比如有10个cell出现在屏幕上,那么可能总共会有12个cell在重用池里,也就是说tableviewController一次载入12个cell,然后10个cell显示在屏幕上,每次滑动表单的时候,滑出屏幕的cell自动添加到重用池里备用,而滑进屏幕的cell也就是从那些在重用池里备用的cell。
按照你说的数据源更新了,按照MVC的架构,view负责显示就好了,你reloaddata之后,既然数据源数量变了,不知道你相应的datasource方法里的数量变过来没比如 tableView:numberOfRowsInSecion:
cell的重用数量是根据出现在屏幕的数量决定的,比如有10个cell出现在屏幕上,那么可能总共会有12个cell在重用池里,也就是说tableviewController一次载入12个cell,然后10个cell显示在屏幕上,每次滑动表单的时候,滑出屏幕的cell自动添加到重用池里备用,而滑进屏幕的cell也就是从那些在重用池里备用的cell。
按照你说的数据源更新了,按照MVC的架构,view负责显示就好了,你reloaddata之后,既然数据源数量变了,不知道你相应的datasource方法里的数量变过来没比如 tableView:numberOfRowsInSecion:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询