小编YSh*_*hin的帖子

调用layoutIfNeeded()时,AutoLayout会中断约束

我正在尝试使用Swift UITaleViewCellUITableViewXCode6中实现动态高度.

我通过图形化设置约束来布置我的单元格(屏幕截图来自XCode5,因为XCode6上有NDA).我还将BodyLabel的换行符属性设置为"自动换行",并将行号设置为"0"以允许多行.

在此输入图像描述

现在,如果我只是在tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?)方法内部设置单元格的内容,那么我就可以正确获得动态高度行为.

但是,由于我按照在线提供的教程(特别是这个),我添加了另一种方法来确定细胞的高度tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!).在我关注的教程中,它告诉我添加cell.layoutIfNeeded(),所以我也添加了.

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

    var cell = tableView!.dequeueReusableCellWithIdentifier(kCellIdentifier) as GroupFeedCell

    // Configure the cell
    if let frc = self.fetchedResultsController {
        let feed = frc.objectAtIndexPath(indexPath) as GroupFeed
        cell.titleLabel.text = feed.name
        if let message = feed.message {
            cell.bodyLabel.text = message
        }
    }

    // Layout the cell
    cell.layoutIfNeeded()

    // Get the height
    var …
Run Code Online (Sandbox Code Playgroud)

uitableview autolayout swift xcode6

26
推荐指数
2
解决办法
5761
查看次数

给定N个排序数组,检查是否有两个包含至少两个公共元素的数组

如果你有N个排序数组,其中可能的元素是从0到N-1的整数,并且单个数组中的元素是不同的,那么如何检查是否至少有两个数组至少有两个元素是共同的?

例如,如果我有以下数组,其中N = 5:

A[0] = {0},
A[1] = {1, 3},
A[2] = {2},
A[3] = {1, 4},
A[4] = {1, 3}
Run Code Online (Sandbox Code Playgroud)

然后A [1]和A [4]共有1和3,因此答案是正确的.

在N再次为5的其他示例中:

A[0] = {0, 4},
A[1] = {1, 3},
A[2] = {1, 2, 4},
A[3] = {0, 3},
A[4] = {1}
Run Code Online (Sandbox Code Playgroud)

没有两个数组A [i],A [j]至少有两个共同的元素,因此答案是错误的.

这是一个采访问题的一部分,我只能在O(n ^ 3)时间内通过遍历每个数组组合(A [i],A [j])来解决,并且在每次迭代中我从0开始扫描到N-1来检查有两个共同的元素.

面试官表示有一个更快的解决方案,并暗示利用阵列的排序,但即使我在过去24小时内考虑这个问题,我也无法提出更好的解决方案.

什么是比O(N ^ 3)更快的算法来解决这个问题?谢谢.

arrays sorting algorithm

5
推荐指数
1
解决办法
249
查看次数

标签 统计

algorithm ×1

arrays ×1

autolayout ×1

sorting ×1

swift ×1

uitableview ×1

xcode6 ×1