Выпадающий список в ячейке UICollectionview - PullRequest
0 голосов
/ 10 сентября 2018

Я разрабатывал приложение TODOList для iOS, но есть проблема, т. Е. Как я могу добавить выпадающий список в ячейку uicollectionview. Означает, что когда представление загрузило загруженное представление, в каждой ячейке должен быть раскрывающийся список

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Пожалуйста, следуйте инструкциям для выполнения операции

  1. Добавить UITableView в UICollectionViewCell.

  2. Сделать скрытое свойство UITableView истинным

    collectionViewCell.dropDownTableView.isHidden = верно

  3. Когда пользователь выбирает опцию для отображения выпадающего меню, перезагружает данные UITableView и устанавливает для скрытого свойства UITableView значение false.

Как добавить UITableView в UICollectionViewCell

0 голосов
/ 10 сентября 2018

В 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 *

0 голосов
/ 10 сентября 2018

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

...