如何将 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 单元格?的主要内容,如果未能解决你的问题,请参考以下文章

JavaFx 将 Window-Control-Buttons 添加到菜单栏(类似 IntelliJ)

VSTO Word 加载项:内容控制嵌套

将动画添加到 ListView 以展开/折叠内容

如何展开到导航堆栈上的第一个视图控制器

将 TabBArController 添加到 UIView

有没有一种简单的方法可以在没有图像的情况下为 Kivy 标签、按钮、小部件等添加边框?