действие при выборе ячейки в сегментированном управлении - PullRequest
0 голосов
/ 19 февраля 2020

Я использую приведенный ниже код для получения действия, выполняемого при выборе ячейки в сегментированном управлении, для выполнения перехода и соответствующей передачи информации, но она не работает, как ожидалось, она ничего не делает при касании ячейки.

код ниже реализован через расширение

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) -> UITableViewCell {
        print("hello1")
        let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyWsPostCell
        switch segmentControl.selectedSegmentIndex{
        case 0:
            print("hello2")
            cell.section1 = section1list[indexPath.row]
            cell.commentbutton.tag = indexPath.row
            cell.commentbutton.addTarget(self, action: #selector(todetailview(_:)), for: .touchUpInside)

            break
        case 1:
            print("hello4")
            cell.section2 = section2list[indexPath.row]
            cell.commentbutton.tag = indexPath.row
            cell.commentbutton.addTarget(self, action: #selector(todetailview(_:)), for: .touchUpInside)

            break

        default:
            break
        }

        return cell
    }

функция называется

    @objc func todetailview(_ sender: AnyObject) {

              performSegue(withIdentifier: "myWtoDetail", sender: self)

          }


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            var vc = segue.destination as! DetailViewController
            vc.infopassed = infokey

     }

если больше информации требуется, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 19 февраля 2020

Поскольку вы нажимаете Button, а не cell, возможно, что didSelect не вызывается, потому что Button покрывает ваше cell. Вы можете использовать ближе.

Класс ячейки вашего табличного представления

class XYZ : UITableViewCell {

  var btn1:(()->())?

  //Create Action For Button 
  @IBAction func btnAction(_ sender: Any) {
     btn1?()
   }
}

В вашем табличном представлении: метод cellForRowAt

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cell = tableView.dequeueReusableCell(withIdentifier:.....

     cell.btn1 = {
            ()in
         // You can Perform your action here. No need to maintain any tag or index 

      }
    }
...