我有一个自定义UITableView,它有两种类型的单元格。一个单元格设置为在类型复选标记的普通附件之间切换。另一个单元格设置为具有自定义图像作为附件类型。当选择附件图像变为其相反类型时,显示“已选择”或“未选择”消息。
if (self.selectedIndex == indexPath.row) {
cell.accessoryView = self.selectedImageView;
}else
cell.accessoryView = self.unSelectedImageView;
如果重要,UIImageViews初始化如下:
-(UIImageView *)selectedImageView
{
if (!_selectedImageView) {
_selectedImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Check"]];
}
return _selectedImageView;
}
-(UIImageView *)unSelectedImageView
{
if (!_unSelectedImageView) {
_unSelectedImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noCheck"]];
}
return _unSelectedImageView;
}
我看到有人回答这个问题:UITableCell AccessoryView: Setting accessoryView equal to UIImageView infinite loop
他说:我已经找到了我自己的答案,但是这里是需要它的其他人:UIImageViews无法共享,因此每个可见单元格需要不同的每个UIImageView实例化。现在你知道了。但我不知道为什么?
答案 0 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>test 1</option>
<option>test 2</option>
<option>test 3</option>
<option>test 4</option>
</select>
<div id="test"></div>
只能是一个父视图的子视图,因此,一旦您将UIView
添加到一个单元格,就无法将其添加到任何其他单元格。
UIImageView
没有此限制,因此您可以修改代码,使其符合您现有的UIImage
和selectedImage
方法,甚至可以修改当前方法使它们每次都返回一个新的UIImageView。