Как узнать, в какую кнопку поместить выбранное содержимое выпадающего списка. Swift - PullRequest
0 голосов
/ 21 ноября 2018

Я использую этот раскрывающийся список в моем проекте: https://github.com/kirkbyo/Dropper

Я хочу ввести выбранный элемент из раскрывающегося списка в текст кнопки.Тем не менее, у меня есть 3 кнопки, которые все с выпадающими списками, и чтобы узнать, какой элемент был нажат, вы используете метод func DropperSelectedRow(_ path: IndexPath, contents: String), который даст вам путь к индексу и строку того, что было нажато.в этом случае вы просто помещаете содержимое в текст кнопки, но я не знаю, в какую кнопку поместить его. Как бы я это выяснил?

это мой код:

class ListComposerTableViewController: UITableViewController, UITextViewDelegate, DropperDelegate {

    @IBOutlet weak var typeButton: UIButton!
    @IBOutlet weak var dateButton: UIButton!
    @IBOutlet weak var publicButton: UIButton!

    let typeDropper = Dropper(width: 105, height: 105)
    let typeOptions = ["Event", "Birthday", "Christmas", "Charity"]

    let publicDropper = Dropper(width: 105, height: 105)
    let publicOptions = ["Public", "Private"]

    let dueDropper = Dropper(width: 105, height: 130)
    let dueOptions = ["Bithday", "Christmas", "Custom Date"]

    override func viewDidLoad() {
        super.viewDidLoad()

        //set up the droppers

        typeDropper.items = typeOptions // Item displayed
        typeDropper.maxHeight = 105
        typeDropper.theme = Dropper.Themes.black(UIColor.white)
        typeDropper.delegate = self
        typeDropper.cornerRadius = typeButton.layer.cornerRadius
        typeDropper.cellColor = Colours.flatColour.main.headings
        typeDropper.cellBackgroundColor = UIColor.white
        typeDropper.width = 105
        typeDropper.height = 105

        publicDropper.items = publicOptions // Item displayed
        publicDropper.maxHeight = 105
        publicDropper.theme = Dropper.Themes.black(UIColor.white)
        publicDropper.delegate = self
        publicDropper.cornerRadius = publicButton.layer.cornerRadius
        publicDropper.cellColor = Colours.flatColour.main.headings
        publicDropper.cellBackgroundColor = UIColor.white
        publicDropper.width = 105
        publicDropper.height = 105  

        dueDropper.items = dueOptions // Item displayed
        dueDropper.maxHeight = 130
        dueDropper.theme = Dropper.Themes.black(UIColor.white)
        dueDropper.delegate = self
        dueDropper.cornerRadius = publicButton.layer.cornerRadius
        dueDropper.cellColor = Colours.flatColour.main.headings
        dueDropper.cellBackgroundColor = UIColor.white
        dueDropper.width = 105
        dueDropper.height = 105
    }

    @IBAction func typeDidPress(_ sender: Any) {
        if typeDropper.status == .hidden {
            typeDropper.showWithAnimation(0.15, options: Dropper.Alignment.center, button: typeButton)
        } else {
            typeDropper.hideWithAnimation(0.1)
        }
    }
    @IBAction func dueDidPress(_ sender: Any) {
        if dueDropper.status == .hidden {
            dueDropper.showWithAnimation(0.15, options: Dropper.Alignment.center, button: dateButton)
        } else {
            dueDropper.hideWithAnimation(0.1)
        }
    }

    @IBAction func publicDidPress(_ sender: Any) {
        if publicDropper.status == .hidden {
            publicDropper.showWithAnimation(0.15, options: Dropper.Alignment.center, button: publicButton)
        } else {
        publicDropper.hideWithAnimation(0.1)
        }
    }

    func DropperSelectedRow(_ path: IndexPath, contents: String) {
        print(path)
        print(contents)
    }

Как бы я поместил содержимое того, что было нажато, в текст кнопки, откуда взялась пипетка?Спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

Используйте func DropperSelectedRow(_ path: IndexPath, contents: String, tag: Int) вместо.Вы можете назначить тег для ваших кнопок и проверить это свойство при вызове метода делегата.

Например: typeDropper.tag = 1

И

func DropperSelectedRow(_ path: IndexPath, contents: String, tag: Int) {
    if tag == 1 {
        typeButton.setTitle(contents, for: .normal)
    }
}
...