每次我设计UITableView时,我都会遇到一个困扰我的一般性问题。
我想根据某个参数选择/取消选择单元格。 但是,在初始化对象之前调用setselected方法,然后它无法真正指示它的状态。 有没有办法在点击时调用此方法? 或者我可能只需要手动完成所有操作。即,首先设计所有单元格然后分配UITableViewCell以响应我的选择器。
此外,有没有办法让整个单元格被选为默认单元格?
非常感谢!
答案 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];
或者你正在寻找的是一个外部参数,它将指示单元格的真实状态