我想在UITableViewCell
中添加一个按钮。这是我的代码:`
if (indexPath.row==2) {
UIButton *scanQRCodeButton = [[UIButton alloc]init];
scanQRCodeButton.frame = CGRectMake(0.0f, 5.0f, 320.0f, 44.0f);
scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
scanQRCodeButton.backgroundColor = [UIColor redColor];
[scanQRCodeButton setTitle:@"Hello" forState:UIControlStateNormal];
[cell addSubview:scanQRCodeButton];
}`
现在,当我运行应用程序时,我只看到一个空行!有什么想法吗?
答案 0 :(得分:13)
虽然把它放在单元格的contentView中是很自然的,但我很确定这不是问题(实际上,在过去,我从来没有在contentView中正确显示子视图,所以我总是使用了细胞)。
无论如何,问题涉及开始创建按钮时的前三行。前两行很好,但代码停止使用:
scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
buttonWithType:实际上是一种创建按钮的便捷方法(就像一个紧凑的alloc-init)。因此,它实际上“消除”了你过去的两行(你基本上创建了两次按钮)。您只能使用init或buttonWithType:作为相同的按钮,但不能同时使用两者。
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];
这将有效(请注意,如果需要,可以使用cell.contentView)。如果您没有使用自动引用计数(ARC),我想提一下,您不必在内存管理方面做任何事情,因为buttonWithType:返回一个自动释放的按钮。
答案 1 :(得分:7)
UIButton *deletebtn=[[UIButton alloc]init];
deletebtn.frame=CGRectMake(50, 10, 20, 20);
deletebtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[deletebtn setImage:[UIImage imageNamed:@"log_delete_touch.png"] forState:UIControlStateNormal];
[deletebtn addTarget:self action:@selector(DeleteRow:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:deletebtn];
或
//下载课程并导入项目UIButton+EventBlocks
UIButton *deletebtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[deletebtn setFrame:CGRectMake(170,5, 25, 25)];
deletebtn.tag=indexPath.row;
[deletebtn setImage:[UIImage imageNamed:@"log_delete_touch.png"] forState:UIControlStateNormal];
[deletebtn setOnTouchUpInside:^(id sender, UIEvent *event) {
//Your action here
}];
[cell addSubview:deletebtn];
答案 2 :(得分:4)
您想要将任何自定义UI元素添加到单元格的contentView
。
所以,而不是[cell addSubview:scanQRCodeButton];
做[cell.contentView addSubview:scanQRCodeButton];
答案 3 :(得分:1)
尝试添加[cell.contentView addSubview:scanQRCodeButton];
,或者如果您希望左侧的按钮在答案处查看my question,请将textLabel
移到侧面。如果您希望按钮位于右侧,则只需将其设置为accesoryView
,例如cell.accesoryView = scanQRCodeButton;
。
答案 4 :(得分:0)
方法setTitle
在我的代码中不起作用,所以我使用
[UIButton.titleLabel setText:@""]
而不是使用setTitle
方法。
请使用以下代码重试:
[scanQRCodeButton.titleLabel setText:@"Hello"];
然后它会运作良好。