2011-09-12 76 views
1

我试图添加按钮,进入我的表格单元格象下面这样:添加按钮到的UITableViewCell

- (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]它工作正常。为什么?

感谢...

+0

通常你的操作方法将有一个sender参数(ID),在这种情况下,选择将是'@selector(actionFirst1:)' – progrmr

回答

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的单元格设置框架。

+0

,它会导致帧位置。如果我设置CGRectMake(0,157,56,26);有用。但为什么? – ysnky

+0

如果单元格内的按钮工作,否则它不起作用 – ysnky

2

您应该添加该按钮,您的电池的contentView财产

[cell.contentView addSubview:buttonCheckbox]; 

事实上,UITableViewCell里面所有的自定义元素应放在contentView内侧,该小区元素(contentView,accessorViewimage)都放置在您的单元格所具有的任何元素的顶部。

检查this doc对细胞有关自定义UITableviewCell

+0

我已经尝试过了,没有工作 – ysnky

+0

你可以把代码为你的选择'actionFirst1'?如果它有一个参数,比如' - (void)actionFirst1:(UIButton *)sender',它不会起作用,因为我发现没有任何参数 –

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。