在我的iOS应用程序中,有一个静态单元格的表格视图控制器,其中包含三种不同类型的单元格,其样式为Subtitle。其中一个应该比其他两个高得多,因为它应该包含很长的文本。因此,在它的大小检查器中,我设置了100的高度,但是当我通过其标识符在代码中创建新单元格时,高度始终是默认值。
我该如何更改?我已经读过我应该覆盖这个方法:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<canvas id="exampleCanvas" width="500" height="300" style="border:1px solid #000000;">
Your browser doesn’t currently support HTML5 Canvas. Please check caniuse.com/#feat=canvas for information on browser support for canvas.
</canvas>
<script type="text/javascript">
var canvas = document.getElementById('exampleCanvas');
context = canvas.getContext('2d');
context.beginPath();
context.moveTo(50,50);
context.lineTo(250,150);
context.stroke();
</script>
</body>
</html>
答案 0 :(得分:7)
正如你所说的那样tableview
单元格是静态的,所以你知道哪个单元格的高度更高,在heightForRowAtIndexPath中传递该单元格的indexpath
并从那里返回预期的单元格高度。
假设您的第一个单元格具有更高的高度,然后使用heightForRowAtIndexPath
这样的
func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 1 {
return 100 //Whatever fits your need for that cell
} else {
return 50 // other cell height
}
}
无需创建三个不同的原型单元格,只需在单元格上创建就足够了。
答案 1 :(得分:2)
您可以按照自己在帖子中提到的heightForRowAtIndexPath
实施,并使用cellForRowAtIndexPath
获取单元格。然后根据reuseIdentifier
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
if cell.reuseIdentifier == "SpecialCell" {
return 100.0
}
}
return 44.0
}
答案 2 :(得分:0)
为什么不在“界面”构建器中使用2个不同的TableViewCell并选择要在cellForRowAtIndexPath中使用的那个?
这是最简单的方法,您甚至可以在必要时区分两种类型。