我有过滤器tableView,这是可扩展的tableView。当用户单击IndexPath [2,0]第三部分第1行中的按钮时,我想在该位置上创建更多单个选择tableView。为此,我得到了btn x和y的位置,并在创建tableView的同时创建了透明视图。但是该新tableView的位置不合适。
当用户在tableView indexPath [2,0]中点击时,如何在特定位置创建新的tableView。
答案 0 :(得分:1)
假设您要在父视图上显示“透明视图”和“单选表视图”。
为您的控制器类创建一个委托以获取当前单元格视图
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) {
//
}
}
在委托方法内为透明视图创建框架并将其添加(将包含您的单个选择表视图)
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)
}