#ios #swift3 #xcode8 #tableviewcell
#iOS #uitableview #swift3 #xcode8
Вопрос:
Я хочу повторно использовать кнопки ячеек для просмотра таблицы. Изначально у меня есть две кнопки в ячейке как скрытые, а одна кнопка видна. когда я нажимаю на видимую кнопку, скрытые две кнопки также будут видны. Я установил целевое действие кнопки. вот мой код
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellForEndItem", for: indexPath as IndexPath) as! CellForEndItem
cell.incrementBtn.isHidden = true
cell.decrementBtn.isHidden = true
cell.priceLbl.text = "$ 200"
cell.counterBtn.tag = indexPath.row
cell.incrementBtn.tag = indexPath.row
cell.decrementBtn.tag = indexPath.row
cell.counterBtn.addTarget(self, action: #selector(CounterBtnTapped(sender:)), for: .touchUpInside) }
Теперь ниже приведен мой метод CounterBtnTapped..
var count: Int = 0
func CounterBtnTapped(sender: UIButton) {
self.count = 1
let indexPath = IndexPath(row: sender.tag, section: 0)
let cell = self.tableView.dequeueReusableCell(withIdentifier: "CellForEndItem",for: indexPath) as! CellForEndItem
cell.incrementBtn.isHidden = false
cell.decrementBtn.isHidden = false
sender.setTitle(String(self.count), for: .normal)
}
Но почему-то кнопки увеличения и уменьшения не видны. Что я здесь делаю не так. Нужно предложение экспертов??
Ответ №1:
Просто поместите кнопку в элемент навигации через раскадровку и измените цвет фона. создайте выход UIButton
и сделайте закругленный угол.
@IBOutlet weak var barBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
barBtn.layer.cornerRadius = 5
barBtn.layer.borderWidth = 1
barBtn.layer.borderColor = UIColor.blackColor().CGColor
}
Комментарии:
1. вопрос улучшен.. несколько изменено… Вот причина
2. Хорошо, нет проблем. но если у вас возникла новая проблема, поднимите отдельный вопрос.
Ответ №2:
Вы можете создать пользовательскую кнопку, а затем добавить CustomView к кнопке панели навигации, которая в вашем случае является rightbarbuttonitem.
var view = UIView(frame: CGRectMake(0, 0, 100, 44))
view.backgroundColor = UIColor.blueColor()
var barButtonItem = UIBarButtonItem(customView: view)
self.navigationItem.rightBarButtonItem = barButtonItem
Добавьте соответствующий код, чтобы ваша кнопка выглядела как дизайн, а затем добавьте ее в CustomView.
Ответ №3:
пользовательское представление можно использовать как элемент BarButtonItem.
let customButton = UIButton(frame: .zero)
// configure title text and color, background color, action, etc. using UIButton functions.
// configure shadow, cornerRadius using customButton.layer properties
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: customButton)
Ответ №4:
Проблема заключалась в обновлении ячейки TableView. Я добавил следующую строку кода
tableView.reloadRows(at: [indexPath], with: .automatic)
Это также работает.