вот мой код выпадающего списка с кнопкой. Я использую табличное представление для этого выпадающего списка. Я хотел сделать этот dropDown Многоразовый . Потому что один и тот же dropDown я собираюсь использовать много раз в другом контроллере представления.
class CellClass: UITableViewCell {
}
class ViewController: UIViewController {
@IBOutlet weak var btnGender: UIButton!
let tableView = UITableView()
var elements = ["Male","Female"]
override func viewDidLoad() {
super.viewDidLoad()
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
tableView.register(CellClass.self, forCellReuseIdentifier: "Cell")
}
func addDropDownList() {
let frames = btnGender.frame
tableView.frame = CGRect(x: frames.origin.x, y: frames.origin.y + frames.height + 5, width: frames.width, height: CGFloat(elements.count * 50))
self.view.addSubview(tableView)
tableView.layer.cornerRadius = 5
}
@IBAction func onClickGender(_ sender: Any) {
addDropDownList()
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return elements.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = elements[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
btnGender.setTitle(elements[indexPath.row], for: .normal)
let frames = btnGender.frame
tableView.frame = CGRect(x: frames.origin.x, y: frames.origin.y + frames.height, width: frames.width, height: CGFloat(elements.count * 0))
}
}
OutPut: - здесь
Я хотел сделать это dropDown Повторно используемым . Потому что один и тот же dropDown я собираюсь использовать много раз в другом контроллере представления. Я только начал учиться быстро. и я ищу помощь в вопросе. Спасибо.