在UITableViewCell中添加按钮

时间:2011-09-12 13:27:18

标签: iphone uitableview uibutton

我正在尝试将按钮添加到我的表格单元格中,如下所示:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 ....
 UIButton* buttonCheckbox = [UIButton buttonWithType:UIButtonTypeCustom];
        buttonCheckbox.frame = CGRectMake(0, 177, 56, 26);
        buttonCheckbox.backgroundColor = [UIColor redColor];
        [buttonCheckbox addTarget:self action:@selector(actionFirst1) forControlEvents:UIControlEventTouchUpInside];


        [buttonCheckbox setTitle:@"MyTitle" forState:UIControlStateNormal];

        [cell addSubview:buttonCheckbox];

但是没有触发actionFirst1事件。如果我添加按钮[self.view addSubview:buttonCheckbox]而不是[cell addSubview:buttonCheckbox],它可以正常工作。为什么呢?

感谢...

3 个答案:

答案 0 :(得分:2)

您应该将此按钮添加到单元格的contentView属性

[cell.contentView addSubview:buttonCheckbox];

事实上,UITableViewCell中的所有自定义元素都应放在contentView内作为此单元格元素(contentViewaccessorViewimage)都被置于您的单元格所有元素的顶部。

检查this doc以获取有关自定义UITableviewCell

的单元格的更多信息

答案 1 :(得分:1)

您可以尝试以下代码,它可以帮助您:

if ([indexPath row] == 0) 
    {
                  UIButton *myButton = [[UISwitch alloc]initWithFrame:CGRectMake(x, y, width, 
                                        heigth)];
        [cell addSubview:myButton];
        cell.accessoryView = myButton;
        [myButton addTarget:self action:@selector (actionFirst1) 
                                  forControlEvents:UIControlEventTouchUpInside];
           }

此代码可以帮助您。请根据TableView的单元格设置框架。

答案 2 :(得分:1)

请查看是否足以将按钮添加为表格单元格的附件视图。在这种情况下,iOS框架会将按钮放置在适合您的单元格样式的位置(尽管您仍然需要给它一个大小)。以下是我的一个项目的例子:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(0, 0, 100, 27);  // only size matters
[myButton setTitle:@"Connect" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(connect:) forControlEvents:UIControlEventTouchUpInside];
cell.accessoryView = myButton;

就是这样。您只需创建控件,确保它有一个大小,并将其设置为accessoryView。