Я пытаюсь добавить настраиваемую кнопку в представление аксессуаров для UITableViewCell.
Я добавил следующий код:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// ....
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "arrow-right-light.png")?.maskWithColor(color: .white), for: .normal)
button.addTarget(self, action: #selector(buttonTest), for: .touchUpInside)
button.tag = indexPath.row
cell.accessoryView = button
// ...
Однако я не вижу, чтобы эта кнопка отображалась в представлении аксессуаров.





Я могу придумать две возможные причины:
Проблема может заключаться в том, что у кнопки нет размера, поэтому она невидима. Добавьте эту строку, после, устанавливая изображение:
button.sizeToFit()
Другая возможность состоит в том, что у вас нет образа с именем "arrow-right-light.png". Это не приведет к сбою вашего существующего кода, но не позволит кнопке иметь какое-либо изображение, чтобы вы не увидели его. Вместо этого попробуйте произнести UIImage(named: "arrow-right-light.png")! в качестве теста; если вы рухнете, проблема действительно в этом, и тогда вы сможете определить правильное имя.
Отлично! Спасибо за ответ.
Приводит к слишком малой области касания, если изображение меньше 44x44 pt.
Я пробовал @ решение Мэтта выше, но это делает кнопку размером с изображение.
Я показал встроенное информационное изображение iOS, которое меньше минимальный рекомендуемый размер кнопки 44x44 точки. Хотя кнопка работает, нажимать ее (э-э) сложно; что является распространенной невидимой проблемой UX, наблюдаемой во многих приложениях (даже профессиональных.
Поэтому вместо вызова button.sizeToFit() вы должны установить высоту кнопок (я сделал полную высоту ячейки 50) и ширину на приятное и легкое нажатие 60.
Спасибо @matt. Это был размер кнопки.