为什么UITableViewCell AccessoryView:设置accessoryView等于UIImageView无限循环

时间:2016-04-07 11:50:44

标签: ios objective-c uitableview uiimageview

我有一个自定义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实例化。现在你知道了。

但我不知道为什么?

1 个答案:

答案 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没有此限制,因此您可以修改代码,使其符合您现有的UIImageselectedImage方法,甚至可以修改当前方法使它们每次都返回一个新的UIImageView。