如何将 Buttons 、标签等内容添加到展开的 tableView 单元格?
Posted
技术标签:
【中文标题】如何将 Buttons 、标签等内容添加到展开的 tableView 单元格?【英文标题】:How to add content such as Buttons , labels to expanded tableView cell? 【发布时间】:2014-08-13 08:12:28 【问题描述】:我有一个 tableView,它的单元格在选择单元格时展开。我想知道如何向这些展开的单元格添加内容。
扩展是这样完成的:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if ([self.expandedCells containsObject:indexPath])
[self.expandedCells removeObject:indexPath];
else
isExpanded=YES;
[self.expandedCells addObject:indexPath];
[self.busTableView beginUpdates];
[self.busTableView endUpdates];
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGFloat kExpandedCellHeight =170;
CGFloat normalCellHeight = 94;
if ([self.expandedCells containsObject:indexPath])
return kExpandedCellHeight;
else
return normalCellHeight;
现在如何在单元格展开后插入一些内容。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"Cell";
ListCell *cell =(ListCell*) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"ListCell" owner:self options:nil];
cell = nibs[0];
if (isExpanded) //tried setting BOOL var in didSelectRow , but it doesn't show the added button
UIButton *bButton = [UIButton buttonWithType:UIButtonTypeCustom];
[bButton setFrame:CGRectMake(100, 100, 40, 40)];
[bButton setTitle:@"Title" forState:UIControlStateNormal];
[cell addSubview:bButton];
else
cell.opName.text = [theArray objectAtIndex:indexPath.row];
return cell;
【问题讨论】:
【参考方案1】:这里我要修改你的代码请再检查一遍
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self.busTableView beginUpdates];
if ([self.expandedCells containsObject:indexPath])
[self.expandedCells removeObject:indexPath];
else
[self.expandedCells addObject:indexPath];
[self.busTableView endUpdates];
[self.butTableView reloadData];
使用 UITableViewCell 类的 ContentView 属性
[cell.ContentView addSubView:bButton]
这是一个例子
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
if (isExpanded)
UIButton *bButton = [UIButton buttonWithType:UIButtonTypeCustom];
[bButton setFrame:CGRectMake(100, 100, 40, 40)];
[bButton setTitle:@"Title" forState:UIControlStateNormal];
[cell.ContentView addSubView:bButton]
【讨论】:
在你的 didSelectRowAtIndexPath 中添加 [tableView reloadData] 你如何在你发布的代码中设置你的 isExpanded 在 didSelectRowAtIndexPath 的 else 部分 我很高兴没有提到,快乐的编码@iCodes,也谢谢你以上是关于如何将 Buttons 、标签等内容添加到展开的 tableView 单元格?的主要内容,如果未能解决你的问题,请参考以下文章