根据 Objective-c 中 cellForRowAtIndexPath 中的行数更改 UITableView 的框架

Change frame of UITableView as per number of rows in cellForRowAtIndexPath in Objective-c

我正在根据 cellForRowAtIndexPath: 中的行数调整 UITableView 的大小,这就是 UITableView 的下一部分不可见的原因,对于不可见的 UITableView 部分,永远不会调用 cellForRowAtIndexPath:。

但我需要根据行数管理 TableView 框架,请建议我如何实现它。 谢谢

您可以使用 UITableView 的内容大小 属性 。

[tableView reloadData]; // you need to reload data first before set frame
tableView.frame =CGRectMake(tableView.frame.origin.x,tableView.frame.origin.x, tableView.frame.size.width, tableView.contentSize.height);

如果你使用的是autoLayout

向您的 UITableView 添加前导、尾随、顶部和底部约束 >=0。还要添加一个优先级为 750 的固定高度约束。为这个高度约束创建一个 IBOutlet 到你的 UIViewController。现在你可以使用计算你的身高。这将允许您的 UITableView 只有在总高度超过屏幕边界时才可滚动。

//dataArray = array of your data source 
tableViewHeightConstraint.constant = dataArray.count * rowHeight;

现在,一旦 UITableView 变为可滚动,此高度限制就会中断,因此如果您要添加删除行的功能,则必须为 UITableView 创建一个新的高度限制一旦行数不占据整个屏幕边界并适当更新新的高度约束。