Swift Tableview始终显示分隔线

时间:2015-05-11 04:11:38

标签: ios uitableview swift

我的一个表格视图中似乎有一个奇怪的问题,我无法隐藏分隔线(我认为它们是分隔线,除了它们在屏幕上居中而不是在右手上一边)。

我以编程方式创建所有内容,因此这里没有故事板问题。

您可以在下面的每个单元格上方看到微小的1px线。

Screenshot of issue

我使用以下方式加载我的表:

    self.tableView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
    self.tableView.dataSource = self
    self.tableView.delegate = self
    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    self.tableView.backgroundColor = UIColor.whiteColor()
    self.tableView.scrollEnabled = true
    self.tableView.bounces = false
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    self.view.addSubview(self.tableView)

我还有一个自定义标头,我使用以下代码实现:

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView

    header.textLabel.textColor = UIColor.whiteColor()
    header.textLabel.frame = header.bounds
    header.textLabel.textAlignment = NSTextAlignment.Center

    view.tintColor = constants.getTintColor()
    header.textLabel.textColor = UIColor.whiteColor()

}

我尝试在没有willDisplayHeaderView的情况下加载表格,问题仍然存在。

我也尝试过添加

tableview.separatorStyle = UITableViewCellSeparatorStyle.None 

tableView.separatorColor = UIColor.clearColor()

以下方法:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    tableView.separatorStyle = UITableViewCellSeparatorStyle.None

}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    tableView.separatorStyle = UITableViewCellSeparatorStyle.None

    return self.boards.count
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    tableView.separatorStyle = UITableViewCellSeparatorStyle.None

    return self.boards[section].items.count
}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
    tableView.separatorStyle = UITableViewCellSeparatorStyle.None

    return self.boards[section].name
}

编辑:

单元格是标准的UITableViewCells,单元格的颜色交替,通过以下方式设置:

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

    let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

    cell.selectionStyle = UITableViewCellSelectionStyle.None

    if indexPath.row % 2 == 0 {
        // Even
        cell.backgroundColor = constants.UIColorFromRGB(0x1EACE0)
    } else {
        // Odd
        cell.backgroundColor = constants.UIColorFromRGB(0x6FBEE5)
    }

    cell.textLabel?.textColor = UIColor.whiteColor()
    cell.textLabel?.text = self.boards[indexPath.section].items[indexPath.row].title

    return cell
}

编辑2:

我现在添加了分隔线,这些不是分隔符,因为您仍然可以在分隔线下方看到它们。

enter image description here

HELP!我糊涂了。我有许多其他的表格视图设置相同(据我所知),它们工作正常。

非常感谢!

4 个答案:

答案 0 :(得分:7)

您可以使用seperatorStyle的表格视图属性,并使用该属性UITableViewCellSeparatorStyleNone

或使用从StoryBoard中删除分隔符

enter image description here

将Seperator的属性设置为无

或者在使用页眉和页脚时更多一点,因此分隔线将为零,但可能有一个额外的分隔符或页眉和页脚,所以请参阅此链接 Eliminate extra separators below UITableView

答案 1 :(得分:4)

由于您没有使用自定义单元格,因此您需要执行以下操作。

创建单元格为let cell : UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell")

并删除self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

答案 2 :(得分:1)

这里有一些关于消除可能有用的虚假分隔符的附加信息。发起人所说的解决方案是创建一个新单元的解决方案:

let cell : UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell")

但是发起人没有说他是如何将这个用于他的代码,其原始版本使用了dequeueReusableCellWithIdentifier的两个参数版本:

let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

我遇到了与虚假分隔符相同的问题,发现使用dequeueReusableCellWithIdentifier的单参数版本也解决了这个问题:

let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell

答案 3 :(得分:0)

我最近遇到了同样的问题,最终在单元格的init中得到了解决:

self.contentView.backgroundColor = UIColor.AppBgColor;
self.backgroundColor = UIColor.AppBgColor;

如果您仔细查看“视图层次结构”,则单元格的背景与contentView的背景不相同,这会导致此问题。

enter image description here