关于UITableView的复用问题
需要实现这样的单选多选功能,我是用TableView做的,但是当选择一个题之后,tableView向下滚动,再滚回来的时候发现第一题的选项已经没有了,我该怎么办,记录每次的选项吗?我觉得类似这样的界面用tableView来写好像不是很好,大家有没有更好的实现方法啊?我看网上也没有人写过类似的界面。
回答:
这个问题其实应该算是单元格重用的问题,解决方法:
可以用一个bool数组来标记题目,用多少道题就初始化一个多大的数组,默认都为no,选中为yes,没选中为no,当你选中的时候,手动修改数组中对应下标的值为yes,然后再reload表中当前行
回答:
今天刚刚注册,为了声望值,来回答一下
这是因为TableViewCell的复用造成的
我目前初步的想法是,题主你用一个数组把你每一个Cell的已经选择的项目存起来,目前你是已经存储了你Cell的可选数据,那就在原来的数据结构里增加一下,存储你每一个Cell的已经选择的选项;
然后你在 “- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;” 方法里把你每一个Cell需要的数据传过去,以前没传cell的已经选择的项目,现在把这个数据增加进去,然后在你自定义的Cell类里面,根据传入的已经选择的选项数据来进行选中。
回答:
tableView的每个cell都应该根据一定的实体对象来配置其外观。这里给个最简单的模型类举例:
@interface Question@property NSString *title;
@property NSArray Options; // 选项
@property NSArray SelectedOptions; // 被选的选项
用户在选择之后,你应该把选择都反馈到模型对象上,比如添加index到selectedOptions里面,然后cellForRowAtIndexPath里面,你再把cell的内容根据Question来填充进去。这样就解决复用问题了
回答:
我前几天也刚刚写了个这种有多选功能的页面 遇到了同样的问题. 想了好久 后来用 ScrollView 重写了遍轻松解决= =}}
回答:
你这个是因为没有在cellForRow里重新将选择过的标记下来,建议你更新数据状态后保存在容器里后,每次刷新获取容器里最新的状态就行了。
回答:
把 - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
代码贴出来看看。
以上是 关于UITableView的复用问题 的全部内容, 来源链接: utcz.com/p/186905.html