我希望我的一个表行成为占据UITableView整行的按钮。我认为最好的方法是实例化UIButton,并给它与UITableViewCell实例相同的帧大小,并将其作为子视图添加到单元格中。我几乎就在那里,但有几个像素没有得到完美的触摸。有没有更好的方法,或者也许我可以修正我的贴装精度以获得完美的对齐效果?
cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell = [self tableviewCellWithReuseIdentifier:CellIdentifier];
}
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(0.0f, 5.0f, 320.0f, 44.0f)];
[button setTitle:@"Do Stuff" forState:UIControlStateNormal];
[button addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];
答案 0 :(得分:13)
您可以在didSelectRowAtIndexPath:方法中伪造它。 将tableView单元格用作按钮。
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:YES animated:YES];
[self doStuff];
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
使用setSelected: animated:
伪造按钮并让它褪色。
可能会为你做伎俩。
答案 1 :(得分:3)
Class(UITableViewCell)具有contentView属性。 所以我把基本按钮放在UITableViewCell变量的contentView中。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
・・・
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(230.0f, 4.0f, 60.0f, 36.0f);
[btn setTitle:@"OK" forState:UIControlStateNormal];
[btn setTitle:@"OK" forState:UIControlStateSelected];
[btn addTarget:self action:@selector(onClickRename:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btn];
・・・
return cell;
}
抱歉,我的英语很差。
答案 2 :(得分:3)
如果你想要它完全适合,只需将单元格的边界称为CGRect。这样做:
button.frame = cell.bounds;
这应该让你的按钮与你的细胞完全一样。希望有所帮助!
线
答案 3 :(得分:0)
这可能不是重点,但是每次重复使用单元格时,您的代码可能会出现另一个按钮添加到单元格的问题。
答案 4 :(得分:0)
我和你有同样的问题。 Ryan给出了答案:使用单元格本身作为带有didSelectedRowAtIndexPath:方法的按钮。
答案 5 :(得分:0)
您还可以添加一个UIImage添加到UITableViewCell,使单元格看起来像一个按钮。
答案 6 :(得分:0)
您还可以使用按钮创建视图,并将其放置在其上方部分的页脚中。这样您就不必担心背景中的单元格图像。我这样做是为了将两个半宽按钮并排放置在一个分组的表视图中。
答案 7 :(得分:0)
FWIW,我把按钮放在我的应用程序CGRectMake(9,0,302,45) 我觉得它看起来很完美。
答案 8 :(得分:0)
UIButton *btnView = [[UIButton alloc] init];
btnView.frame = CGRectMake(52.0f, 2.0f, 215.0f, 38.0f);
[btnView setImage:[UIImage imageNamed:@"invite.png"] forState:UIControlStateNormal];
[btnView addTarget:self action:@selector(showInviteByMail) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btnView];
[btnView release];