首页 > 关于UITableView的复用问题

关于UITableView的复用问题

需要实现这样的单选多选功能,我是用TableView做的,但是当选择一个题之后,tableView向下滚动,再滚回来的时候发现第一题的选项已经没有了,我该怎么办,记录每次的选项吗?我觉得类似这样的界面用tableView来写好像不是很好,大家有没有更好的实现方法啊?我看网上也没有人写过类似的界面。


- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 代码贴出来看看。


tableView的每个cell都应该根据一定的实体对象来配置其外观。这里给个最简单的模型类举例:

@interface Question

@property NSString *title;

@property NSArray Options; // 选项

@property NSArray SelectedOptions; // 被选的选项 

用户在选择之后,你应该把选择都反馈到模型对象上,比如添加index到selectedOptions里面,然后cellForRowAtIndexPath里面,你再把cell的内容根据Question来填充进去。这样就解决复用问题了


今天刚刚注册,为了声望值,来回答一下

这是因为TableViewCell的复用造成的

我目前初步的想法是,题主你用一个数组把你每一个Cell的已经选择的项目存起来,目前你是已经存储了你Cell的可选数据,那就在原来的数据结构里增加一下,存储你每一个Cell的已经选择的选项;

然后你在 “- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;” 方法里把你每一个Cell需要的数据传过去,以前没传cell的已经选择的项目,现在把这个数据增加进去,然后在你自定义的Cell类里面,根据传入的已经选择的选项数据来进行选中。


你这个是因为没有在cellForRow里重新将选择过的标记下来,建议你更新数据状态后保存在容器里后,每次刷新获取容器里最新的状态就行了。


这个问题其实应该算是单元格重用的问题,解决方法:
可以用一个bool数组来标记题目,用多少道题就初始化一个多大的数组,默认都为no,选中为yes,没选中为no,当你选中的时候,手动修改数组中对应下标的值为yes,然后再reload表中当前行


我前几天也刚刚写了个这种有多选功能的页面 遇到了同样的问题. 想了好久 后来用 ScrollView 重写了遍轻松解决= =}}

【热门文章】
【热门文章】