将按钮添加到 UITableView 单元格
Adding buttons to a UITableView cell
我正在尝试使用如下代码向我的 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 class?
为数组制作按钮时,框架设置如下:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 70)]
添加元素的用法在某些时候发生了变化。使用
[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];
只是一种可能的方式,但是一种快速的方式
在你的 - (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];
}
我正在尝试使用如下代码向我的 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 class?
为数组制作按钮时,框架设置如下:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 70)]
添加元素的用法在某些时候发生了变化。使用
[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];
只是一种可能的方式,但是一种快速的方式
在你的 - (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];
}