В iOS нет встроенной функции выпадающего меню, но вы можете сделать это с помощью UITableView
или сторонней библиотеки.
Я предлагаю вам попробовать это. DropDown
определить это глобально.
let dropDown = DropDown()
Если вы хотите настроить dropDown, вы можете использовать это.
func customizeDropDown() {
DropDown.appearance().cellHeight = 40
DropDown.appearance().backgroundColor = UIColor.white
DropDown.appearance().selectionBackgroundColor = Colors.purpleColor
DropDown.appearance().cornerRadius = 5
DropDown.appearance().textColor = Colors.NavTitleColor
DropDown.appearance().shadowColor = (UIColor.init(hexString: "1AD691")?.withAlphaComponent(0.0))!
DropDown.appearance().shadowOpacity = 0.9
DropDown.appearance().shadowRadius = 0
DropDown.appearance().animationduration = 0.25
}
В cellForItemAt
вам нужно добавить действие на вашу выпадающую кнопку следующим образом.
cell.btnDropdown.tag = indexPath.item
cell.btnDropdown.addTarget(self, action: #selector(btnDropDownTapped), for: .touchUpInside)
Как только вы нажмете на любую кнопку из UICollectionViewCell
, нижеприведенный метод будет вызывать, куда вам нужно передать anchorView
.
@IBAction func btnDropDownTapped(_ sender: UIButton) {
self.dropDown.anchorView = sender // The view to which the drop down will appear on
self.dropDown.bottomOffset = CGPoint(x: 0, y: sender.bounds.height) //Top of drop down will be below the anchorView
self.dropDown.dataSource = ["First", "Last", "Second", "Third"] // Static array you need to change as per your requirement
self.dropDown.selectionAction = { [unowned self] (index, item) in
print(item) // **NOTE: I AM JUST PRINTING DROPDOWN SELECTED VALUE HERE, YOU NEED TO GET `UICollectionViewCell` HERE YOU NEED TO SET VALUE INSIDE CELL LABEL OR YOU CAN SET SELECTED DROPDOWN VALUE IN YOUR MODEL AND RELOAD COLLECTIONVIEW**
self.collectionView.reloadData()
}
self.dropDown.show()
}
Если у вас UITextField
в вашем UICollectionViewCell
, вы можете попробовать этот код внутри textFieldShouldBeginEditing
делегата.
ПРИМЕЧАНИЕ. Я ПРОСТО ПЕЧАТИ ВЫБРАННОЕ ЗНАЧЕНИЕ DROPDOWN ЗДЕСЬ, ВАМ НУЖНО ПОЛУЧИТЬ UICollectionViewCell
ЗДЕСЬ ВАМ НУЖНО УСТАНОВИТЬ ЗНАЧЕНИЕ ВНУТРЕННЕЙ КЛЕТОКИ ИЛИ ВЫ МОЖЕТЕ УСТАНОВИТЬ ВЫБРАННОЕ ЗНАЧЕНИЕ УСТРАНЕНИЯ В ВАШЕЙ МОДЕЛИ И ПЕРЕЗАГРУЗИТЬ КОЛЛЕКЦИЯ ** 1032 1033 *