我正在开发TODOList iOS应用程序,但是存在一个问题,即如何在uicollectionview单元格中添加下拉列表。 意思是当视图加载了加载集合视图时,每个单元格中应该都有一个下拉列表
答案 0 :(得分:1)
iOS没有下拉菜单的本机控件。您可以使用选择器。 如下所示:
let picker: UIPickerView
picker = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
picker.backgroundColor = .whiteColor()
picker.showsSelectionIndicator = true
picker.delegate = self
picker.dataSource = self
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.Default
toolBar.translucent = true
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker")
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker")
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
textField1.inputView = picker
textField1.inputAccessoryView = toolBar
有很多库添加到github上,用于酷选择器控件: Actionsheet PickerView Selectionmenu
答案 1 :(得分:0)
请按照步骤执行操作
在UICollectionViewCell中添加UITableView。
将UITableView的hidden属性设为true
collectionViewCell.dropDownTableView.isHidden = true
答案 2 :(得分:0)
iOS中没有任何内置的下拉功能,但是您可以使用UITableView
或使用3rd party库来实现。
我建议您尝试一下。 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
委托中尝试使用此代码。
注意:我只是在这里打印下拉选择的值,您需要在UICollectionViewCell
处设置细胞标签内的值,或者可以在模型和重新加载集合视图中设置所选的下拉值