UICollectionview单元格中的下拉列表

时间:2018-09-10 10:17:22

标签: ios swift uicollectionview uicollectionviewcell dropdown

我正在开发TODOList iOS应用程序,但是存在一个问题,即如何在uicollectionview单元格中添加下拉列表。 意思是当视图加载了加载集合视图时,每个单元格中应该都有一个下拉列表

3 个答案:

答案 0 :(得分:1)

iOS没有下拉菜单的本机控件。您可以使用选择器。 如下所示:

enter image description here  这是添加pickerView的代码。

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)

请按照步骤执行操作

  1. 在UICollectionViewCell中添加UITableView。

  2. 将UITableView的hidden属性设为true

    collectionViewCell.dropDownTableView.isHidden = true

  3. 当用户选择显示下拉菜单的选项时,请重新加载UITableView数据并将UITableView的hidden属性设置为false。

How to add UITableView to UICollectionViewCell

答案 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处设置细胞标签内的值,或者可以在模型和重新加载集合视图中设置所选的下拉值