首先在UITableViewCell上调用setSelected

时间:2014-05-14 16:00:29

标签: ios uitableview uiviewcontroller

每次我设计UITableView时,我都会遇到一个困扰我的一般性问题。

我想根据某个参数选择/取消选择单元格。 但是,在初始化对象之前调用setselected方法,然后它无法真正指示它的状态。 有没有办法在点击时调用此方法? 或者我可能只需要手动完成所有操作。即,首先设计所有单元格然后分配UITableViewCell以响应我的选择器。

此外,有没有办法让整个单元格被选为默认单元格?

非常感谢!

3 个答案:

答案 0 :(得分:0)

我不确定这是否是您想要的,但您始终可以使用以下方法选择和取消选择UITableViewCell:

选择: [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];

取消选择: [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

您可以通过在cellForRowAtIndexPath中选择单元格或在UITableViewController的viewWillAppear方法中选择单元格来选择单元格

答案 1 :(得分:0)

好的..谢谢你,知道如何自己设计...... 一种定制的setSelected。

-(id) initWithCoder:(NSCoder *) aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self)
    {
     self.highlighted = FALSE;
     UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tableCellClicked)];
     tapGesture.numberOfTapsRequired = 1;
     tapGesture.delaysTouchesBegan = YES;
     [self addGestureRecognizer:tapGesture];
    }
    return self;
}

- (void)tableCellClicked
{
        BetCellModeIndex cellMode = [self returnCellModeEnum ];
        switch (cellMode) {
            case Selected:
                cell.mode = notSelected;
                [self setSelectedStyle:  NotSelected];
                break;
            case NotSelected:
                cell.mode = selected;
                [self setSelectedStyle:  Selected];
                break;
            default:
                //TODO: HANDLE THE OTHER CASES
                break;
        }
     }
}

-(void) setSelectedStyle : (BetCellModeIndex) betCellModeIndex
{
switch (cellMode) {
    case Selected:
        self.backgroundColor =  [UIColor greenColor];
        break;
    case NotSelected:
        self.backgroundColor =  [UIColor redColor];
        break;
    default:
        //TODO: HANDLE THE OTHER CASES
        break;

     }
 }

答案 2 :(得分:0)

您可以通过代码

来完成
select: [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];

deselect: [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

或者你正在寻找的是一个外部参数,它将指示单元格的真实状态