Как добавить заголовок в кнопку из массива в swift 4 - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть массив, и я хотел бы знать, как я могу добавить заголовок к 4 кнопкам UIB, используя sender.tag в Swift 4

Это мой массив:

let answer: array = ["Black","Green","Red","Gray"]

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let array = ["Black","Green","Red","Gray"]

    var oldButton = UIButton()

    for i in 1...array.count {

        let button = UIButton()

        if i == 1 {

            button.frame = CGRect(x: 10, y: 40, width: 90, height: 20)
            button.tag = i
            button.addTarget(self, action: #selector(ViewController.selctorButton(_:)), for: UIControl.Event.touchDown)
            button.setTitle(array[button.tag - 1], for: .normal)

        }

        else {

            button.frame = CGRect(x: oldButton.frame.maxX + 10, y: 40, width: 90, height: 20)
            button.tag = i
            button.addTarget(self, action: #selector(ViewController.selctorButton(_:)), for: UIControl.Event.touchDown)
            button.setTitle(array[button.tag - 1], for: .normal)

        }

        button.backgroundColor = UIColor.black
        view.addSubview(button)
        oldButton = button

    }
}

@objc func selctorButton(_ sender : UIButton){

    print(sender.tag)

}

}

0 голосов
/ 27 декабря 2018

Используйте sender.tag в качестве индекса в массиве answer.Используйте guard, чтобы убедиться, что sender.tag является допустимым индексом (чтобы он не падал):

let answer = ["Black", "Green", "Red", "Gray"]

@IBAction func buttonPressed(_ sender: UIButton) {
    guard answer.indices.contains(sender.tag) else { return }

    sender.setTitle(answer[sender.tag], for: .normal)
}

Если вы подключите свои кнопки к этому @IBAction и установите свои значения tag0 - 3, тогда заголовки будут установлены, когда будут установлены при нажатии кнопок.


Если ваши кнопки являются частью коллекции розеток:

@IBOutlet var buttons: [UIButton]!

вы можете установить их следующим образом (например, в viewDidLoad()):

buttons.forEach { $0.setTitle(answer[$0.tag], for: .normal)

Опять же, обязательно установите значения tag в диапазоне answer.indices.

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