Estoy desarrollando un TODOList (aplicación iOS) pero hay un problema, es decir, ¿cómo puedo agregar una lista desplegable a la celda uicollectionview? Significa cuándo se cargó la vista, se cargó la vista de colección, debería haber un menú desplegable en cada celda

-2
user6305542 10 sep. 2018 a las 13:17

3 respuestas

La mejor respuesta

No hay ninguna funcionalidad desplegable incorporada en iOS, pero puede hacerlo usando UITableView o usando una biblioteca de terceros.

Te sugiero que pruebes esto. DropDown

Definir esto a nivel mundial.

let dropDown = DropDown()

Si desea personalizar dropDown, puede usar esto.

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
}

En cellForItemAt necesita agregar acción en su botón desplegable como este.

cell.btnDropdown.tag = indexPath.item
cell.btnDropdown.addTarget(self, action: #selector(btnDropDownTapped), for: .touchUpInside)

Una vez que tocaste cualquier botón de UICollectionViewCell, el método a continuación llamará a donde debes pasar 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()
}

Si tiene UITextField en su UICollectionViewCell, puede probar este código dentro del delegado textFieldShouldBeginEditing.

NOTA: SOLO ESTOY IMPRIMIENDO EL VALOR SELECCIONADO AQUÍ, USTED NECESITA OBTENER UICollectionViewCell AQUÍ NECESITA ESTABLECER EL VALOR DENTRO DE LA ETIQUETA CELULAR O PUEDE CONFIGURAR EL VALOR DESPLEGADO SELECCIONADO EN SU MODELO Y VUELVA A COLECCIONAR LA VISTA

1
Denis 10 sep. 2018 a las 12:22

Siga los pasos para realizar su operación.

  1. Agregue UITableView en UICollectionViewCell.

  2. Convierte la propiedad oculta de UITableView en verdadera

    uicollectionViewCell.dropDown TableView.isHidden = true

  3. Cuando el usuario seleccione la opción para mostrar el menú desplegable, vuelva a cargar los datos de UITableView y establezca la propiedad oculta de UITableView en falso.

Cómo agregar UITableView a UICollectionViewCell

0
Nilesh Solanki 10 sep. 2018 a las 12:14

IOS no tiene ningún control nativo para los menús desplegables. En su lugar, puede usar selectores. Ver como a continuación:

ingrese la descripción de la imagen aquí Aquí está el código para agregar 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

Hay muchas bibliotecas agregadas a github para controles de selección geniales: Actionsheet PickerView Selectionmenu

1
Logic 10 sep. 2018 a las 10:33