Как узнать какая кнопка была нажата? - PullRequest
0 голосов
/ 04 июля 2019

В раскадровке 5 кнопок.Если я нажму любую кнопку, она перейдет в новую раскадровкуВ новой раскадровке я просто хочу найти, какая кнопка была нажата, чтобы прийти сюда.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Добавьте тег к кнопке (в коде или в раскадровке) и отправьте тег следующему ViewController нажатой кнопки.

class ViewController: UIViewController {

    override func viewDidLoad() {

        firstButton.tag = 1
        secondButton.tag = 2
        thirdButton.tag = 3
    }

    func goToNextVC(buttonTag: Int) {

        let vc = SecondVC()
        vc.buttonTag = buttonTag
        self.navigationController.push(vc, animated: true)
    }

    // action for all buttons if he just only send tag
    func buttonsDidTap(_ sender: Any) {
        goToNextVC(buttonTag: sender.tag)
    }
}

И Второй ViewController

class SecondVC: UIViewController {

    var buttonTag: Int?

    override func viewDidLoad() {

        if buttonTag != nil {
            switch buttonTag:
            case 0:
            // ...
        }
    }
}
0 голосов
/ 04 июля 2019

Вы можете создать класс State, в котором вы можете установить тип кнопки, представленный перечислением.Затем получите доступ к значению в новой раскадровке.

struct State {
    static var btnType: ButtonType? 
}

enum ButtonType {
    case buttonA
    case buttonB
    // ..
}

В контроллере основного вида, где есть кнопки, установите состояние при нажатии кнопки.

class ViewController: UIViewController {
    func buttonADidTap(_ sender: Any) {
        State.btnType = .buttonA        
        // display the other view controller, say MyVCA
    }

    func buttonBDidTap(_ sender: Any) {
        State.btnType = .buttonB
        // ..
    }
}

В контроллере дочернего вида откройте данные о состоянии в viewDidLoad.

class MyVCA: UIViewController {

    override func viewDidLoad() {
        if let btnType = StateData.btnType {
            switch btnType:
            case .buttonA:
                // ...
        }
    }
}
...