Swift Tableview всегда показывает разделительные линии

у меня, кажется, странная проблема с одним из моих табличных представлений, где я не могу скрыть разделительные линии ( я думаю, что это разделительные линии, за исключением того, что они сосредоточены на экране, а не на правой стороне ).

Я создаю все программно, поэтому здесь нет проблем с раскадровкой.

вы можете увидеть крошечную линию 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
}

EDIT:

ячейки являются стандартными 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

помогите! Я в замешательстве. У меня есть ряд других tableviews, настроенных так же (насколько я вижу), и они работают нормально.

спасибо!

4 ответов


поскольку вы не используете пользовательские ячейки, вам нужно сделать следующее.

создать ячейку как let cell : UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell")

и удалить self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")


вы можете использовать свойство Table View для seperatorStyle и использовать свойство как таковое UITableViewCellSeparatorStyleNone

или используйте удалить разделитель из раскадровки

enter image description here

задайте свойству разделителя значение None

или еще одна вещь, пока вы используете верхний и Нижний колонтитулы, поэтому разделительная линия будет равна нулю, но может быть дополнительный разделитель или верхний и Нижний колонтитулы, поэтому обратитесь к этой ссылке исключите дополнительные сепараторы ниже UITableView


в функции viewDidLoad() добавьте следующее:

tableView.tableFooterView = UIView()

вот немного дополнительной информации об устранении паразитных сепараторов, которые могут быть полезны. Решение, которое, по словам создателя, работало, было этим, которое создает новую ячейку:

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