无法在Xcode 6动态表中更改行高

时间:2015-08-04 22:29:40

标签: swift uitableview xcode6

我有一个UItableViewController,并希望行高适应UITextView中的文本。如果我在viewDidLoad中使用此代码,则会使行的高度太小而无法容纳文本:

 self.tableView.rowHeight = UITableViewAutomaticDimension   
 self.tableView.estimatedRowHeight = 50

我可以找到调整大小的唯一方法是更改​​StoryBoard中的表视图行高。这会更改表格视图中的每个单元格,这不是我想要的。

有没有人对我遗失的内容有任何建议?

4 个答案:

答案 0 :(得分:4)

这是我的工作代码:

override func tableView(tableView: UITableView,
    heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        var text:String
        if indexPath.section > 0 {
            text = switchNameArray [indexPath.row]
        } else {
            text = viewDescription
        }
        return calculateHeight(text)
}

func calculateHeight (text:String) -> CGFloat {
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad
    {
        return CGFloat(count(text)+50) // iPad
    } else {
        return CGFloat(count(text)+30) // iPhone
    }
}

答案 1 :(得分:3)

有一种覆盖方法可以更改每行的高度。

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    return 50

}

如果你想让它更大或更小,你也可以创建和If-Else条件。只需返回一个数字

答案 2 :(得分:1)

您可以尝试使用:

func tableView(tableView: UITableView,
    heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

        return 100 //Whatever fits your need for that cell
}

您可以使用tableView.cellForRowAtIndexPath(indexPath)获取单元格,并根据需要设置高度。

答案 3 :(得分:0)

如果您希望它适应您的内容的大小 获取当前tableView框架然后调整高度 取决于内容的高度。

bool find_something(std::string s, char something)
{
    for (ch : s)
        if (ch == something) return true;
    return false;
}