首次加载页面时,我无法设置自定义单元格附件视图,任何想法?
在DetailView customcell的课程中我有:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if(self.selected)
self.accessoryType=UITableViewCellAccessoryCheckmark;
else
self.accessoryType=UITableViewCellAccessoryNone;
}
在tableview控制器中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewCell *cell = [DetailViewCell cellForTableView:tableView];
if(somelogichere){
[cell setSelected:YES];
}
return cell;
}
我调试并点击那一行,所以逻辑是真的,但是在调试中我也看到它在设置了附件之后再次调用所选方法的两倍,在第二次调用中将else中的附件覆盖为none。 setSelected导致所选方法被调用两次并覆盖第二次调用的设置因为某种方式在第二次调用self.selected返回false;
更新:我通过在自定义单元类中创建布尔cellSelected属性并更改和检查其状态而不是设置和更改单元格的选定属性来解决问题,这也是更好的因为我可以支持多个选择tableview将来会更好。
答案 0 :(得分:0)
视图加载后第二次有效吗?
它很可能与以下行有关:
if(somelogichere){
[cell setSelected:YES];
}
什么是somelogichere
?
第一次运行代码时,somelogichere
您的selected
属性可能不正确,具体取决于if(self.selected)
self.accessoryType=UITableViewCellAccessoryCheckmark;
else
self.accessoryType=UITableViewCellAccessoryNone;
:
selected
确保在开头设置单元格的setSelected
属性。或者更改{{1}}。
HTH
答案 1 :(得分:0)
您尝试使用此代码帮助您
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
UIImage *selectionBackground = [UIImage imageNamed:@"list_BG.jpg"];
UIImageView *iview=[[UIImageView alloc] initWithImage:selectionBackground];
self.selectedBackgroundView=iview;
}
或强>
tableView 的cellForRowAtIndexPath
方法:
cell.accessoryType = UITableViewCellAccessoryCheckmark;