将UITableViewCell保留在其他单元格之前

时间:2016-07-12 18:54:20

标签: ios swift uitableview

我试图将较低的细胞保持在它们上方的细胞前面。我在一个单元格中有一个子视图,理想情况下会在下面的单元格后面。我无法找到将代码放在何处执行此操作。我想我应该使用这段代码:

for i in 0 ..< arrayWarningTitles.count{
        let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: i, inSection: 0))
        self.tableView.bringSubviewToFront(cell!)
}

但是我不确定在哪里,因为我已经尝试了几个不同的地方而且没有一个工作(willDeselectRowAtIndexPath和didSelectRowAtIndexPath),我也想在初始加载时也是如此。任何建议将不胜感激!

更新(添加了表格视图代码)

以下是我的表格视图代码的大部分内容,如果它可以帮助任何人,我已删除了上面的代码段,因为它不起作用。

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    selection = indexPath.row
    tableView.beginUpdates()
    tableView.endUpdates()
    //  self.tableView
}

override func tableView(tableView: UITableView, willDeselectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
    tableView.beginUpdates()
    tableView.endUpdates()


    return indexPath;
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
    cell.selectionStyle = UITableViewCellSelectionStyle.None
    cell.backgroundColor = UIColor.clearColor()
    // Configure the cell...

    let warningTitle = self.view.viewWithTag(1) as? UILabel
    let expirationTime = self.view.viewWithTag(2) as? UILabel
    let textView = self.view.viewWithTag(5) as? UITextView
    let grayBackground = self.view.viewWithTag(6)
    let redBackground = self.view.viewWithTag(7)

    warningTitle?.text = arrayWarningTitles[indexPath.row]

    redBackground!.layer.masksToBounds = true;
    redBackground!.layer.cornerRadius  = 20;
    grayBackground!.layer.masksToBounds = true;
    grayBackground!.layer.cornerRadius  = 20;

    redBackground?.clipsToBounds = false;
    cell.clipsToBounds = false;
    cell.contentView.clipsToBounds = false;
    cell.contentView.superview?.clipsToBounds = false;
    self.tableView.bringSubviewToFront(cell)
    return cell
}

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


    if (indexPath.row == selection) { //change 0 to whatever cell index you want taller
        return UIScreen.mainScreen().bounds.height - 140 - 64;
    }
    return 58;//Choose your custom row height
}

0 个答案:

没有答案