我正在尝试使用以下代码向我的UITableView单元格添加按钮:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
UIButton *button = self.buttons[0];
[cell addSubview:button];
return cell;
}
按钮不显示。是否可以像这样向单元格添加按钮,还是必须创建自定义UITableViewCell类?
当为阵列制作按钮时,框架设置如下:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 70)]
答案 0 :(得分:1)
添加元素的用法已经改变了一些。使用
[cell.contentView addSubview:button];
如果已添加按钮,请不要忘记提示:P
enum
{
kButtonForA = 3333 // example
};
每个按钮组
button.tag = kButtonForA;
并使用它们
UIButton* btn = (UIButton *)[cell.contentView viewWithTag:kButtonForA];
if(!button)
btn = self.buttons[i];
<强>更新强>
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if(!self.buttons || [self.buttons count] == 0)
return 0;
return ...;
}
在初始化数组后,使用
[tableView reloadData];
只是一种可能的方式,但速度很快
答案 1 :(得分:0)
在你的 - (UITableViewCell *)tableView中尝试这个:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([cell.contentView viewWithTag:100] == nil) {
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(130,25, 40.0, 40.0);
[button setTitle:@"+" forState:UIControlStateNormal];
[button addTarget:self action:@selector(aMethod:)
forControlEvents:UIControlEventTouchUpInside];
button.tag=100;
[cell.contentView addSubview:button];
}
然后执行操作
-(void)aMethod:(id)sender {
NSInteger tag=[[sender superview] tag];
//NSInteger value=[[self.qtt objectAtIndex:tag] integerValue]+1;
//[self.qtt replaceObjectAtIndex:tag withObject:[@(value) stringValue]];
//[self.mytableview reloadData];
}