如何以编程方式选择tableview单元格?

时间:2014-12-02 11:11:56

标签: ios objective-c uitableview

当我创建自定义UITableviewCell时,我在cell.selected = YES委托方法UITableView中设置tableview:cellForRowAtIndexPath,但它不起作用。

但是,当我在[tableview reloadData]之后调用[tableView selectRowAtindexPath:]时,没有问题。我很困惑

以下是一些代码来源:

-(void)setModel:(GAInterestSetModel *)model
{
    _model = model;
    if (model.iconURL && model.iconURL.length > 1) {
        [iconView setImageWithURL:[NSURL URLWithString:model.iconURL]];
    }
    if (model.title && model.title.length > 1) {
        titleLabel.text = model.title;
    }
    if (model.memberCounts) {
        membersLabel.text = [NSString stringWithFormat:@"成员:%d",model.memberCounts];
    }
    self.selected = model.defaultChoosed;
}

代替方法:

[modelsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        tempModel = (GAInterestSetModel *)obj;
        if (tempModel.defaultChoosed) {
            [rootTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:idx inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
        }
    }];

1 个答案:

答案 0 :(得分:0)

选择不是单元格的属性。调用.selected = YES绝对没有任何意义,因为表格并不知道选择。

你必须使用[table selectRowAtIndexPath:...],否则它将无法工作。

另一种可能性是忽略默认选择并实现自己的选择机制。