ios - UITableView 决定单个行高

标签 ios uitableview model-view-controller uikit

我有一个带有自定义标题部分和单元格的表格 View 。我已经创建了我的模型,现在模型保留了对剖面 View 标题的引用,这是“糟糕”的设计,但实际上我只是遵循了苹果的示例代码。好吧,我的单元格有一个标签,可以容纳多行数据,因此应该调整它的大小,以便每一行都可见。我想这将是 Controller 的工作,heightForRowAtIndexPath 对吗?事实上,从那里检索单元格并从那里获得它的高度并不困难。但是,对于尚未创建单元格的事实,这是不可能的。 (如果我错了请纠正我)

我能想到的唯一可行的方法是在我的模型中引用单元格,是的,我知道,坏公民。但这样我就可以很容易地达到我需要的高度。

另一种方法是创建一个使用 sizeWithAttributes: 计算高度的方法,但这似乎确实是一个糟糕的设计,因为我不应该知道我的 View 外观。

我是否在这里监督一些基本的事情?或者它就是这样。

我没有附上任何代码,因为我不知道您想要什么,但请随时让我插入一些代码。

最佳答案

您不需要调用 cellForRowAtIndexPath 来获得指定的结果。 我相信您正在使用数组字典数组 来保存内容,

让数组成为

   NSArray *arrData = [[NSArray alloc]init];

现在,在

**heightForRowAtIndexPath**
{
   if ( [[arrData objectAtIndex:indexPath.row].length] < 30 )
     return 40;  // Initial height
   else    if ( [[arrData objectAtIndex:indexPath.row].length] > 30 )
     return 60;   // Or any other value as per your need

}

这将调整单元格的高度,具体取决于该单元格内字符串的长度。 并且,在 cellForRowAtIndexPath 使用

[cell.lblText setFrame:CGRectMake(0,0,cell.frame.size.width, cell.frame.size.height)];

//如果你想让它更有活力

heightForRowAtIndex中写入

{
 int _iCount = [[self.arrData objectAtIndex:indexPath.row].length] % 40;

if ( _iCount == 0 )
return 40;
else
 return 40*_iCount;
}

这会解决它。

关于ios - UITableView 决定单个行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989281/

相关文章:

model-view-controller - 如何避免将依赖项注入(inject)对象以便它可以传递它们?

iphone - UITableView 内的标注

javascript - 是否有适用于 iOS 和 Android 的原生控件的 javascript 框架?

ios - 边距空间 UITableView (Swift)

ios - 滚动时防止搜索栏消失

php - MVC 应该如何在 CodeIgniter 中工作

java - Spring MVC 在调用 SpringStoredProcedure.execute() 后是否发出提交

html - 仅在 iOS 上,粘性表格标题在滚动后松开

php - xcode 6.1 更新后 xCode 无法连接到本地主机

ios - 防止键盘输入附件 View 引起的表格 View 动画