如何将Int转为TableView Cell的IndexPath?及TableView末行高度不生效解决方法
咱们一个一个来解决你的问题:
问题1:如何将Int类型转换为TableView Cell对应的IndexPath?
TableView的IndexPath由section(分组)和row(行)两个整数属性组成,转换的核心是明确你的Int值对应的是哪一行,还要注意行号的索引规则:
- 如果你的Int是0-based的行索引(和数组索引一致,比如第1行对应0),直接通过
IndexPath的构造方法创建即可:let targetRow: Int = 2 // 对应TableView的第3行(从0开始计数) let indexPath = IndexPath(row: targetRow, section: 0) // section填实际分组号,单分组填0 - 如果你的Int是1-based的行号(比如用户说的“第5行”),记得先减1转成0索引再创建:
let userRow: Int = 5 // 用户口中的第5行 let indexPath = IndexPath(row: userRow - 1, section: 0)
问题2:最后一行高度未修改的解决方案
你的代码里有个关键错误:TableView的row索引是从0开始的,数组的count是元素总数,所以最后一行的row应该是myArray.count - 1,而不是myArray.count。比如数组有3个元素,row范围是0、1、2,count是3,你的判断条件永远不会触发,自然不会修改最后一行高度。
修正后的代码如下:
// 建议用Swift原生数组替代NSArray,更符合类型安全特性 var myArray: [Any] = [] func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { // 判断是否为最后一行 if indexPath.row == myArray.count - 1 { return 400 } return 120 }
另外还要确保这两个前提:
- 你的TableView数据源方法正确返回了行数:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return myArray.count } - 如果是多分组TableView,记得加上分组判断(比如
indexPath.section == 0),避免影响其他分组的最后一行。
内容的提问来源于stack exchange,提问作者MeMouli
相关产品推荐
相关产品推荐

