当其中一个项目被删除时,如何调整TableView高度

时间:2016-12-12 06:46:38

标签: ios swift uitableview swift3

最初我想创建一个 UITableView ,根据其内容大小具有动态高度,并按照 stackoverflow 的问题来克服这种情况。那么在经历这个问题后实施了什么:

func autoAdjustToTableView(){

        numberTableView.frame = CGRect(x: numberTableView.frame.origin.x, y: numberTableView.frame.origin.y, width: numberTableView.frame.size.width, height: numberTableView.contentSize.height)

    }

在这个问题的答案中,有人建议我应该从 viewDidAppear 以及 viewDidLayoutSubViews 调用此内容,并且还要调用

tableView.reloadData() 
viewDidLayoutSubviews

中的

所以我的第一个问题为什么我必须在我的 viewDidLayoutSubviews 中编码?

虽然它工作正常,直到我从tableView中删除一个项目并调用相同的功能,但没有让我动态变化。这是我删除它的地方:

let alertController = UIAlertController(title: "title", message: "message", preferredStyle:UIAlertControllerStyle.alert)

        alertController.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default)
        { action -> Void in

            return

        })
        alertController.addAction(UIAlertAction(title: "Remove", style: UIAlertActionStyle.destructive)
        { action -> Void in

            self.numberArray.remove(at: indexPath.row)
            self.autoAdjustToTableView()
            self.numberTableView.reloadData()

        })
        self.present(alertController, animated: true, completion: nil)

        }

在删除项目时需要做些什么来改变它的高度?

1 个答案:

答案 0 :(得分:0)

首先,您需要调用reloadData来更改tableView中的单元格。您需要调用autoAdjustToTable视图来更改高度。

        self.numberArray.remove(at: indexPath.row)

        self.numberTableView.reloadData()
        self.autoAdjustToTableView()