1

我在 TableView 中有一个自定义单元格,并且单元格中有一个按钮。当我选择单元格时,背景变为蓝色,按钮消失。有什么办法可以防止这种情况发生吗?

像这样的 cellForRowAtIndexPath -

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    cell = [[MyTableCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                  reuseIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

}
Search *current = [self.retrievedTweets objectAtIndex:indexPath.row];
cell.textLabel.text = current.text;
cell.textLabel.font = [UIFont systemFontOfSize:15.0];
cell.textLabel.numberOfLines = 2;
cell.detailTextLabel.text = current.name;
cell.imageView.image = current.userImage;


btnUncheck =[[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)];


btnUncheck.backgroundColor = [UIColor redColor];
btnUncheck.layer.cornerRadius = 10;
btnUncheck.hidden =NO;
btnUncheck.tag=indexPath.row;
//[btnUncheck addTarget:self action:@selector(didSelectRowAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];

[cell.contentView addSubview:btnUncheck];
return cell;
}
4

6 回答 6

1

为选定的表格单元格使用自定义图像。或尝试使用按钮图像。

于 2012-05-09T13:57:43.183 回答
0

你可以做的是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{[tableView deselectRowAtIndexPath:indexPath animated:YES];}

希望这可以帮助

另外,如果你已经实现了这个,那么在这个委托方法中你还有什么?

于 2012-05-09T14:35:49.157 回答
0

创建一个背景颜色清晰的“自定义”视图并设置为它。

UIView* vista=[[[UIView alloc] init] autorelease];
vista.backgroundColor=[UIColor clearColor];
cell.selectedBackgroundView=vista;
于 2012-05-09T15:36:25.280 回答
0

而不是这一行:

btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)];

利用:

btnUncheck = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
[btnUncheck setFrame:CGRectMake(400, 35, 20, 20)];
于 2012-05-09T14:45:04.697 回答
0

在您的 tableview 委托方法中粘贴以下行

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

///// your code ///////////
cell.selectionStyle=UITableViewCellSelectionStyleNone;
//// your code////////

}

在这里你的蓝色背景不会显示..

于 2012-05-09T14:23:19.613 回答
0

解决这个问题的方法是创建一个自定义单元格,然后在 xib 编辑器中添加一个按钮。

因此,在 xib 编辑器中,添加一个“UITableViewCell”项。然后将按钮添加到 xib 编辑器中的该单元格项目。然后,您将在此处将您的自定义单元格附加到相应 .m 文件中的表格:

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我只用一个单行表和自定义单元格作为属性从 xib 绑定​​到具有表视图的 .h 文件尝试了这一点。突出显示在那里,只是使按钮变灰(仍然可见)。要让它与更多行一起工作,需要更多的参与。您需要加载自定义 utableviewcell xib 并动态分配您的自定义单元格以使其正常工作。

于 2012-05-09T16:02:30.113 回答