Swift Tableview всегда показывает разделительные линии
у меня, кажется, странная проблема с одним из моих табличных представлений, где я не могу скрыть разделительные линии ( я думаю, что это разделительные линии, за исключением того, что они сосредоточены на экране, а не на правой стороне ).
Я создаю все программно, поэтому здесь нет проблем с раскадровкой.
вы можете увидеть крошечную линию 1px над каждой из ячеек ниже.
я загружаю свою таблицу, используя:
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:
теперь я добавил разделительные линии, и это не разделители, потому что вы все еще можете видеть их под разделительной линией.
помогите! Я в замешательстве. У меня есть ряд других tableviews, настроенных так же (насколько я вижу), и они работают нормально.
спасибо!
4 ответов
поскольку вы не используете пользовательские ячейки, вам нужно сделать следующее.
создать ячейку как let cell : UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell")
и удалить self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
вы можете использовать свойство Table View для seperatorStyle
и использовать свойство как таковое UITableViewCellSeparatorStyleNone
или используйте удалить разделитель из раскадровки
задайте свойству разделителя значение None
или еще одна вещь, пока вы используете верхний и Нижний колонтитулы, поэтому разделительная линия будет равна нулю, но может быть дополнительный разделитель или верхний и Нижний колонтитулы, поэтому обратитесь к этой ссылке исключите дополнительные сепараторы ниже UITableView
вот немного дополнительной информации об устранении паразитных сепараторов, которые могут быть полезны. Решение, которое, по словам создателя, работало, было этим, которое создает новую ячейку:
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