Повторно использовать скрытые кнопки в пользовательской ячейке tableViewCell [ios]

#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)

Это также работает.