Кнопка изменения заголовка из другого класса - PullRequest
1 голос
/ 04 августа 2020

помогите, пожалуйста, как изменить кнопку заголовка из другого класса

Класс, в котором нужно изменить

protocol ChangeButtonDelegate: class {
    func changeButton(sender: UIButton)
}

class SubscribeVC : UIViewController {
    @IBAction func tryButtonAction(_ sender: UIButton) {
        delegate?.changeButton(sender: sender)
        subscribeCheck = true
        view.removeFromSuperview()
    }
}

В этом классе кнопка должна быть изменена

class OrderVC: UIViewController, ChangeButtonDelegate {

override func viewDidLoad() {
        super.viewDidLoad()
        
        subscribe.delegate = self
}

func changeButton(sender: UIButton) {
        orderButton.setTitle("Check", for: .normal)
    }
}

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Если вы представляете SubscribeVC, измените действие кнопки на:

@IBAction func tryButtonAction(_ sender: UIButton) {
    delegate?.changeButton(sender: sender)
}

и измените функцию делегата в OrderVC на:

func changeButton(sender: UIButton) {
        orderButton.setTitle("Check", for: .normal)
        // dismiss the presented VC
        dismiss(animated: true, completion: nil)
    }
}
0 голосов
/ 04 августа 2020

Ваш вопрос неясен.

Если вы спрашиваете, как подключиться к другому контроллеру представления и изменить заголовок кнопки, ответ будет «не делайте этого».

Вы должны рассматривать иерархию представлений контроллера представления как частную. Если вы хотите предоставить возможность изменять заголовок кнопки, добавьте метод setOrderButtonTitle(_ newTitle: String). В реализации этого метода установите заголовок кнопок на новую строку. Затем вызовите этот метод, когда вам нужно изменить заголовок кнопки (хотя обратите внимание, что вы не можете изменить представления контроллера представления до тех пор, пока представления не будут загружены).

...