Как изменить положение tableView на основе компонентов super view - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть фильтр tableView, это расширяемый tableView.Когда пользователь нажимает на кнопку в IndexPath [2,0] 3-й раздел 1-й строки, я хочу создать на более единственном select tableView в этой позиции.Для этого я получаю позицию btn x и y и создаю прозрачное представление, на котором я создаю tableView.Но позиция этого нового tableView неверна.

Как создать новый tableView в определенной позиции, когда пользователь нажал на tableView indexPath [2,0].

1 Ответ

1 голос
/ 17 апреля 2019

Предполагая, что вы хотите отобразить «прозрачное представление» и «представление таблицы с одним выбором» в родительском представлении.

  1. Создайте делегат для вашего класса контроллера, чтобы получить текущую ячейкуview

    protocol MyCellDelegate: class {
       func didTapButton(forCell cell: MyTableViewCell)
    }
    
    class MyTableViewCell: UITableViewCell {
    
       weak var delegate: MyCellDelegate?
    
       @IBAction func didTapButton(_ sender: UIButton) {
         delegate?.didTapButton(forCell: self)
       }
    }
    
    class MyViewController: UIViewController, UITableViewDataSource, MyCellDelegate {
    //...
    
      func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
         cell.delegate = self
      }
    
      func didTapButton(forCell cell: MyTableViewCell) {
      //
      }
    }
    
  2. Создать фрейм для прозрачного представления внутри метода делегата и добавить его (который будет содержать ваше единственное представление таблицы выбора)

    func didTapButton(forCell cell: MyTableViewCell) {
       let buttonFrame = cell.convert(cell.myButton.frame, to: self.view)
       let transparentView = UIView(frame: CGRect(x: buttonFrame.origin.x,
                                               y: buttonFrame.maxY,
                                               width: buttonFrame.width,
                                               height: 128))
       let singleSelectTableView = UITableView(frame: CGRect(origin: .zero, size: transparentView.frame.size))
       // setup table view data source code here (make a separate class)
       transparentView.addSubview(singleSelectTableView)
       self.view.addSubview(transparentView)
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...