Add button to UITableViewCell

前端 未结 5 1663
一个人的身影
一个人的身影 2021-02-03 15:07

I want to add a button in a UITableViewCell. This is my code: `

if (indexPath.row==2) {
    UIButton *scanQRCodeButton = [[UIButton alloc]init];

           


        
5条回答
  •  难免孤独
    2021-02-03 15:48

    While it's natural to put it in the contentView of the cell, I'm fairly certain that is not the problem (actually, in the past, I've never had subviews displayed correctly in the contentView, so I've always used the cell).

    Anyway, the problem involves the first three lines of when you start creating your button. The first two lines are fine, but the code stops working with:

    scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    

    buttonWithType: is actually a convenience method to create a button (it's like a compact alloc-init). Therefore, it actually "nullifies" your past two lines (you basically created the button twice). You can only use either init or buttonWithType: for the same button, but not both.

    UIButton *scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    scanQRCodeButton.frame = CGRectMake(0.0f, 5.0f, 320.0f, 44.0f);
    scanQRCodeButton.backgroundColor = [UIColor redColor];
    [scanQRCodeButton setTitle:@"Hello" forState:UIControlStateNormal];    
    [cell addSubview:scanQRCodeButton];
    

    This will work (note that you can use cell.contentView if you wanted). In case you're not using Automatic Reference Counting (ARC), I would like to mention that you don't have to do anything in term of memory management, because buttonWithType: returns an autoreleased button.

提交回复
热议问题