需要实现这样的单选多选功能,我是用TableView做的,但是当选择一个题之后,tableView向下滚动,再滚回来的时候发现第一题的选项已经没有了,我该怎么办,记录每次的选项吗?我觉得类似这样的界面用tableView来写好像不是很好,大家有没有更好的实现方法啊?我看网上也没有人写过类似的界面。
需要实现这样的单选多选功能,我是用TableView做的,但是当选择一个题之后,tableView向下滚动,再滚回来的时候发现第一题的选项已经没有了,我该怎么办,记录每次的选项吗?我觉得类似这样的界面用tableView来写好像不是很好,大家有没有更好的实现方法啊?我看网上也没有人写过类似的界面。
今天刚刚注册,为了声望值,来回答一下
这是因为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来填充进去。这样就解决复用问题了
把 - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
代码贴出来看看。
2 回答1.1k 阅读
1 回答1.2k 阅读✓ 已解决
1 回答2.8k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答949 阅读
1 回答789 阅读
这个问题其实应该算是单元格重用的问题,解决方法:
可以用一个bool数组来标记题目,用多少道题就初始化一个多大的数组,默认都为no,选中为yes,没选中为no,当你选中的时候,手动修改数组中对应下标的值为yes,然后再reload表中当前行