#swift
Вопрос:
Я пытаюсь создать выпадающее меню, в котором при нажатии кнопки «Выбрать» выпадают два варианта. Я хочу, чтобы эти параметры были кнопкой расписания и кнопкой отчета о расходах. Я не могу заставить его работать, вот мой код.
import UIKit
class SecondViewController: UIViewController {
@IBOutlet weak var SelectBTN: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func handleSelection(_ sender: UIButton) {
SelectBTN.ForEach { (button) in
UIView.animate(withDuration: 0.3, animations: {
button.isHidden = !button.isHidden
self.view.layoutIfNeeded()
})
}
}
@IBAction func cityTapped(_ sender: UIButton) {
}
@IBAction func ERBTNpressed(_ sender: UIButton) {
self.performSegue(withIdentifier: "ERSegue", sender: self)
}
@IBAction func TSBTNpressed(_ sender: UIButton) {
self.performSegue(withIdentifier: "TSSegue", sender: self)
}
}
Комментарии:
1. Добро пожаловать в Stack Overflow. Действительно ли необходимы все эти пустые строки в коде? Если нет, рассмотрите возможность редактирования записи, обрезав некоторые из этих пустых строк.
Ответ №1:
Вы можете установить меню в качестве основного действия для кнопки в viewDidLoad
:
SelectBTN.showsMenuAsPrimaryAction = true
SelectBTN.menu = buttonMenu()
В меню вы можете добавить действия:
func buttonMenu() -> UIMenu {
let ERAction = UIAction(title: "Expense report", image: nil) { (_) in
self.performSegue(withIdentifier: "ERSegue", sender: self)
}
let TSAction = UIAction(title: "Timesheet", image: nil) { (_) in
self.performSegue(withIdentifier: "TSSegue", sender: self)
}
return UIMenu(title: "", options: .displayInline, children: [ERAction, TSAction])
}
Вы также можете добавлять изображения в действия и указывать атрибуты (например .destructive
, для действия удаления).