2017-10-11 75 views
0

我有我的UITableViewCells工作正常。我希望能够点击菜单按钮,扩大单元格的高度,露出一组按钮按图像:无法解决垂直展开的UITableViewCells显示按钮

Image

我的代码如下:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.row == Globals.selectedRowIndex { 
     return 335 
    } else { 
     return 125 
    } 
} 

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
    if indexPath.row == Globals.selectedRowIndex { 
     Globals.selectedRowIndex = -1 
    } else { 
     Globals.selectedRowIndex = indexPath.row 
    } 
    tableView.reloadData() 
} 

尽管如此,这些按钮全都在小尺寸上被挤压在一起。我认为他们只会被裁剪出来。我想我可以通过让他们隐藏点击。我还没有尝试过。

我也无法为它们设置高度,因为我的约束似乎不适用于单元格内的任何东西。我不知道为什么。我可以设置自动调整但不限制。

我想虽然有可能是一个完全更好的方法来做到这一点,我失踪了。任何指针将不胜感激。

+0

请尝试这个库:https://github.com/younatics/ExpandableCell –

+0

@Manigandasaravanan检查了这一点。忘记我可以找一个图书馆 – Sean

+0

我已经多次回答这个问题,并为此在github上做了一个示例项目,查看它:https://github.com/bavarskis/ExpandingTableViewCell.git –

回答

0

首先迭代到tableCount并赋值为false。例如,

for i=0;i<tablecount;i++ 
{ 
    self.isSelected.append(false) 
} 

例如,如果你有5个单元的手段,你将有这样的价值观:

isSelected = [false, false, false, false, false] 

然后,同时扩大细胞分配True.Otherwise分配假

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     selectedIndex[indexPath.row] = indexPath.row; 
     if isSelected[indexPath.row] 
     { 
      isSelected[indexPath.row] = false 
      self.tableView.reloadRowsAtIndexPaths([tableView.indexPathForSelectedRow!], withRowAnimation: .Fade) 

     } 
     else 
     { 
      isSelected[indexPath.row] = true 
      self.tableView.reloadRowsAtIndexPaths([tableView.indexPathForSelectedRow!], withRowAnimation: .Fade) 

     } 
} 
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
       if isSelected[indexPath.row] 
       { 
        return 275.0 
       } 
       else 
       { 
        return 110.0 
       } 

}