滑动表格单元在滑动运动时重叠单元格内容

时间:2015-11-18 02:49:02

标签: ios swift uitableview tableviewcell

我在swift中使用MGSwipeTableCell,但尝试了多个其他库,都导致了同样的问题。

基本上,我设置了一个MGSwipeTableCell类型的自定义单元类。我添加一些标签等,这一切都很好。请参阅下面的代码,了解Cell Class Code。

import UIKit
import BTLabel
import MGSwipeTableCell

class MessageCell: MGSwipeTableCell {

let name = UILabel()
let contactTime = BTLabel()
let lineSeperator = UIView()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)

}


required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}


override func layoutSubviews() {

    super.layoutSubviews()

    self.backgroundColor = Styles().heyGreen()
    self.selectionStyle = .None

    name.frame = CGRectMake(self.bounds.width/10, self.bounds.height/5, self.bounds.width/10*7, self.bounds.height/10*5)
    name.backgroundColor = UIColor.clearColor()
    name.font = Styles().FontBold(30)
    name.textColor = UIColor.whiteColor()
    name.textAlignment = .Left
    self.addSubview(name)


    contactTime.frame = CGRectMake(self.bounds.width/10, self.bounds.height/10*7, self.bounds.width/10*7, self.bounds.height/10*2)
    contactTime.backgroundColor = UIColor.clearColor()
    contactTime.font = Styles().FontBold(15)
    contactTime.textColor = Styles().heySelectedOverLay()
    contactTime.verticalAlignment = .Top
    contactTime.textAlignment = .Left
        self.addSubview(contactTime)

        lineSeperator.frame = CGRectMake(0, self.bounds.height - 1, self.bounds.width, 1)
        lineSeperator.backgroundColor = Styles().heySelectedOverLay()
        self.addSubview(lineSeperator)
    }

}

我的tableviewcontroller中的cellForRowMethod如下所示。

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cellIdendifier: String = "MessageCell"

    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdendifier) as! MessageCell!
    if cell == nil {
   tableView.registerClass(MessageCell.classForCoder(), forCellReuseIdentifier: cellIdendifier)

        cell = MessageCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdendifier)
    }

    cell.name.text = "heysup"
    cell.contactTime.text = "100 days"

    cell.delegate = self //optional

    //configure left buttons
    cell.leftButtons = [MGSwipeButton(title: "", icon: UIImage(named:"check.png"), backgroundColor: UIColor.greenColor())
        ,MGSwipeButton(title: "", icon: UIImage(named:"fav.png"), backgroundColor: UIColor.blueColor())]
    cell.leftSwipeSettings.transition = MGSwipeTransition.Rotate3D

    //configure right buttons
    cell.rightButtons = [MGSwipeButton(title: "Delete", backgroundColor: UIColor.redColor())
        ,MGSwipeButton(title: "More",backgroundColor: UIColor.lightGrayColor())]
    cell.rightSwipeSettings.transition = MGSwipeTransition.Rotate3D

    return cell
}

问题在于,当我滑过时,这就是它的样子。

enter image description here

我不知道它出了什么问题或者做了什么。我也不确定是不是因为我将标签添加到了错误的图层?我记得在obj-c中,你曾经把东西添加到单元格视图中或其他东西......

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我实际上解决了这个问题 - 我需要将标签添加到contentView,而不是实际视图。

所以代码应该是

self.contentView.addSubview(name) 

例如,在自定义tableviewcell