Выбор таблицы скрывает мою кнопку в ячейке tableview
Есть еще один вопрос с такой же логикой. Подменю UITableViewCell исчезает, когда выбрана ячейка. Я не получил правильное решение, которое я хочу. Они предлагают подклассифицировать это представление. Но мне нужна кнопка отображения внутри самой ячейки.
Перейдем к моему вопросу:
У меня есть индивидуальное и программно созданное табличное представление.
Пожалуйста, взгляните на скриншоты.
![enter image description here]()
В этом я программно добавила кнопку в ячейку таблицы.
Давайте рассмотрим проблему.
![enter image description here]()
Когда я выбираю любую ячейку, она также скрывает кнопку, я хочу видеть эту кнопку.
Мой код здесь:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
// here is the redbutton
var redBtn = UIButton()
redBtn = UIButton(frame: CGRectMake(0, 0, 40, 40))
redBtn.backgroundColor = UIColor.redColor()
cell.addSubview(redBtn)
//label text just added from an array
cell.textLabel?.textAlignment = NSTextAlignment.Center
cell.textLabel?.text = items[indexPath.row]
return cell
}
При необходимости: код создания таблицы:
var tableView: UITableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
tableView.frame = CGRectMake(0, 50, self.view.frame.width,self.view.frame.height);
tableView.delegate = self
tableView.dataSource = self
tableView.estimatedRowHeight = 30
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.view.addSubview(tableView)
}
Спасибо заранее.
Ответы
Ответ 1
Вот решение. Дайте номер тега кнопке.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
// here is the redbutton
var redBtn = UIButton()
redBtn = UIButton(frame: CGRectMake(0, 0, 40, 40))
redBtn.backgroundColor = UIColor.redColor()
cell.contentView.addSubview(redBtn)
redBtn.tag = 101
//label text just added from an array
cell.textLabel?.textAlignment = NSTextAlignment.Center
cell.textLabel?.text = items[indexPath.row]
return cell
}
Теперь в методе didSelectRowAtIndex добавьте это.
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
var selectedCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!
for subViews in selectedCell.contentView.subviews {
if subViews is UIButton && subViews.tag == 101 {
let button = subViews as! UIButton
selectedCell.bringSubviewToFront(button)
button.backgroundColor = UIColor.redColor()
}
}
}
Ответ 2
Поскольку UITableView изменяет цвет фона ваших подзонов в ячейке при ее выборе. В вашем случае он меняет цвет кнопки красного цвета на тот же цвет, что и линия выделения (серый).
Вы можете увидеть решение здесь:
Подменю UITableViewCell исчезает при выборе ячейки
Ответ 3
При чтении немного больше документации, похоже, UITableViewCell
изменяет цвет фона на представлениях, когда он подсвечен или выбран. Попробуйте следующее:
Заменить setSelected(_ selected: Bool, animated animated: Bool)
и setHighlighted(_ highlighted: Bool, animated animated: Bool)
. Повторно установите фоновые цвета кнопок и не забудьте вызвать super
.
Ответ 4
Вы можете добавить пользовательскую кнопку:
class NoHighlightButton: UIButton {
override var backgroundColor: UIColor? {
get {
return super.backgroundColor
}
set {
if newValue != UIColor.clearColor() {
super.backgroundColor = newValue
}
}
}
}
Ответ 5
Вы не должны использовать cell.addSubview(aSubview)
. Вместо этого вы должны использовать cell.contentView.addSubview(aSubview)
. Не могу сказать, что это 100% ваша проблема, но это может быть.
В документации UITableViewCell:
Если вы хотите настроить ячейки, просто добавив дополнительные виды, вы должны добавить их в представление содержимого, чтобы они были соответствующим образом расположены, когда ячейка переходит в режим редактирования и выходит из него.
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/#//apple_ref/occ/instp/UITableViewCell/contentView