Tableview内部另一个具有动态高度的表视图,用于内部tableview

时间:2017-10-14 05:24:44

标签: uitableview swift3

我是iOS开发的新手。我想要实现的是在另一个tableView中有一个tableView,并且必须选择内部tableView中的项目。我实施这个时遇到了一些问题。

  • 我需要有一个动态的表视图高度(即,第一次加载时,内部表视图应该只有一个高度来显示3个单元格,并且在外部tableview单元格中单击一个show more按钮时,外部表视图单元格将展开并显示内部表视图中的剩余单元格)
  • 在内部tableView中选择一个单元格时,内部表格视图单元格中的所有其他单元格也被选中。

我附上了我所做的代码和我试图实现的图像。 Please click here to see the desing i want to achieve

外主表查看方法

    extension Explore:UITableViewDelegate,UITableViewDataSource{

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 13
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = exploreTableView.dequeueReusableCell(withIdentifier: "exploreCell", for: indexPath) as! ExploreAlbumPosting

        if isExpanded{
            cell.showMoreBtn.setTitle("Show Less", for: .normal)
            cell.showMoreBtn.setImage(#imageLiteral(resourceName: "ic_arrow_drop_up"), for: .normal)
        }
        else{

            cell.showMoreBtn.setTitle("Show More", for: .normal)
            cell.showMoreBtn.setImage(#imageLiteral(resourceName: "ic_arrow_drop_down"), for: .normal)

        }

        cell.showMoreBtn.addTarget(self, action: #selector(showMoreBtnTapped(sender:)), for: .touchUpInside)
        cell.showMoreBtn.tag = indexPath.row
               return cell


    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

        if isExpanded && selectedIndex == indexPath{

            return 180 * numberOfRowsInInnerTableView
        }
        return UITableViewAutomaticDimension
    }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return  215
    }


}

显示更多Btn Tapp行动

func showMoreBtnTapped(sender:UIButton){

let row = sender.tag
self.selectedIndex = IndexPath(item: row, section: 0)
isExpanded = !isExpanded
self.exploreTableView.reloadRows(at: [selectedIndex!], with: .automatic)
self.exploreTableView.scrollToRow(at: selectedIndex!, at:UITableViewScrollPosition.middle, animated: true)

}

内部表视图方法(这扩展到customcell类 - 外部表视图的UITableViewCell)

extension ExploreAlbumPosting:UITableViewDelegate,UITableViewDataSource{

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 8
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = innerAlbumTableView.dequeueReusableCell(withIdentifier: "ExploreAlbumInnerCell", for: indexPath)

        return cell

    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

        return 92

    }
}

请帮帮我。谢谢你

0 个答案:

没有答案