Swift扩展Tableview单元格如何调整高度

时间:2018-04-29 23:45:42

标签: ios swift uitableview

希望有人可以帮助我,不管怎样,谢谢你。因此实现了一个扩展的Tableview单元格(当我点击它打开的单元格更详细),现在我想调整单元格的高度,我该怎么做?因为在单元格之前我想要一个带有描述的图像,我希望单元格不在顶部但在我的控制器的末尾,我试图在我的视图控制器中放置一个想象但我的代码中有错误,什么我需要调整高度的代码,并在单元格之前放置描述图像?

class PROVAViewController: UITableViewController {

    var tableViewData = [cellData]()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        tableViewData = [cellData(opened: false, title: "Title1", sectionData: ["Cell1","Cell2","Cell3"]),
                         cellData(opened: false, title: "Title1", sectionData: ["Cell1","Cell2","Cell3"]),
                         cellData(opened: false, title: "Title1", sectionData: ["Cell1","Cell2","Cell3"]),
                         cellData(opened: false, title: "Title1", sectionData: ["Cell1","Cell2","Cell3"])]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return tableViewData.count
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if tableViewData[section].opened == true {
            return tableViewData[section].sectionData.count + 1
        } else {
            return 1
        }

    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let dataIndex = indexPath.row - 1
        if indexPath.row == 0 {
            guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell") else {return UITableViewCell()}
            cell.textLabel?.text = tableViewData[indexPath.section].title
            return cell

        } else {
            guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell") else {return UITableViewCell()}
            cell.textLabel?.text = tableViewData[indexPath.section].sectionData[dataIndex]
            return cell
        }
    }
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.row == 0 {
            if tableViewData[indexPath.section].opened == true {
                tableViewData[indexPath.section].opened = false
                let sections = IndexSet.init(integer: indexPath.section)
                tableView.reloadSections(sections, with: .none) // play around with it(cosa significa non lo so, vedi video)

            }else{
                tableViewData[indexPath.section].opened = true
                let sections = IndexSet.init(integer: indexPath.section)
                tableView.reloadSections(sections, with: .none)

            }
        }

        }

    }

2 个答案:

答案 0 :(得分:0)

设置标签的顶部,底部,前导和尾部,同时将行数设置为 0 。将tableview高度设置为 UITableViewAutomaticDimension 。这将使标签和细胞根据内容生长。

ScreenShot 1

答案 1 :(得分:0)

我不确定你是否理解你的问题:

您的单元格旁边有 <ul> <li *ngFor="let category of menuitem"> <span><input type="checkbox (change)="OnCheckboxSelect(category,$event)"> </span> <span><a href="#{{category._id}}" data-toggle="collapse" > {{category.category_name}}</a> </span> <ul id="{{category._id}}" class="collapse"> <li *ngFor="let item of category?.category_item"> <span><input type="checkbox" (change)="OnItemSelect(item, $event)"> </span> <span><a href="#{{item._id}}" data-toggle="collapse"> {{item.item_name}}</a> </span> <ul id="{{item._id}}" class="collapse"> <li *ngFor="let size of item?.item_size"> <span><input type="checkbox" name=""> </span> <span>{{size.size_name}} </span> </li> </ul> </li> </ul> </li> </ul> imageView旁边有动态内容。

您可以使用以下逻辑。

步骤: - 1 确保两个位置的行大小都已更改,如屏幕截图所示:

enter image description here enter image description here

步骤: - 2 UILabelimageView拖到单元格中,并按照以下约束条件完成操作:

enter image description here

希望这有帮助。