Я делаю выпадающий список с несколькими значениями в нем, он должен выпадать при нажатии на кнопку. Нажатие происходит, но выпадает невидимый список, без отображения значений
Вот часть кода, которая задействована для этой функции:
class AddNewOperationViewController: UIViewController {
let categories = ["Taxi", "Restaurants", "Gloceries"]
let categoryButton: UIButton = {
let button = UIButton()
button.backgroundColor = .black
button.setTitle("Category", for: .normal)
button.addTarget(self,
action: #selector(onClickDropButton),
for: .touchUpInside)
return button
}()
var tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
tableView.isHidden = true
setupUI()
}
func animate(toogle: Bool, type: UIButton) {
if toogle {
UIView.animate(withDuration: 0.3) { [self] in
self.tableView.isHidden = false
}
} else {
UIView.animate(withDuration: 0.3) {
self.tableView.isHidden = true
}
}
}
func setButtonLabelTableViewStack(_ stack: UIStackView, button: UIButton, label: UILabel, tableView: UITableView) {
stack.backgroundColor = .white.withAlphaComponent(0.9)
stack.addArrangedSubview(label)
stack.addArrangedSubview(button)
stack.addArrangedSubview(tableView)
stack.axis = .vertical
stack.alignment = .center
stack.spacing = 50
}
@objc func onClickDropButton(_ sender: Any) {
if tableView.isHidden {
print("123")
animate(toogle: true, type: categoryButton)
} else {
animate(toogle: false, type: categoryButton)
}
}
private func setupUI() {
let descriptionStack = UIStackView()
setLabel(self.categoryTitle, text: self.titles[1])
setButtonLabelTableViewStack(categoryStack, button: self.categoryButton, label: self.categoryTitle, tableView: self.tableView)
}
extension AddNewOperationViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return categories.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = categories[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
categoryButton.setTitle("\(categories[indexPath.row])", for: .normal)
animate(toogle: false, type: categoryButton)
}
}