Как найти индекс выбранного элемента в UIStackView Swift 4 - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть 5 кнопок в UIStackView, и я хочу выяснить, какой индекс выбирается, а затем сравнить эти индексы. Мой код прямо сейчас дает мне Array.Index. Я пробовал оба подпредставления и организовал подпредставления. Могу ли я в любом случае превратить это в целое число? Я не могу понять это. Спасибо !!

if let selectedIndex = stackview.subviews.index(of: sender) {

}

// ОБНОВЛЕНИЕ Я получил то, что хотел:

let int = stackview.subviews.distance(from: stackview.subviews.startIndex, to: selectedIndex)

Я до сих пор не уверен, что это самый эффективный способ, но пока он работает.

Ответы [ 3 ]

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

Предполагая, что ваше представление стека содержит только кнопки , и каждая кнопка подключена к этому @IBAction, это должно работать:

@IBAction func didTap(_ sender: Any) {

    // make sure the sender is a button
    guard let btn = sender as? UIButton else { return }

    // make sure the button's superview is a stack view
    guard let stack = btn.superview as? UIStackView else { return }

    // get the array of arranged subviews
    let theArray = stack.arrangedSubviews

    get the "index" of the tapped button
    if let idx = theArray.index(of: btn) {
        print(idx)
    } else {
        print("Should never fail...")
    }

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

enter image description here

index(of:) возврат Int.

Также вы должны найти свою кнопку в arrangedSubviews, а не в subviews

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

Я бы добавил тег к каждой из ваших кнопок (button.tag = index), а затем проверил тег вашего отправителя.

Итак, вы можете подключить каждую из ваших кнопок к одной и той же функции с параметром отправителя, а затем проверить, если sender.tag == index.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...