ОК ...
Я думаю, вы подходите к этому с неправильной стороны.Ответственность кнопки должна заключаться в том, чтобы сообщить вам, что пользователь нажал на нее, и ничего более.Кнопка не должна иметь дело со входом.
Но ... вы здесь на 90%.Еще несколько бит, чтобы добавить.
Вы можете обновить свою кнопку отправки, чтобы включить делегата и использовать делегата в вашем действии кнопки ...
import UIKit
// protocol
protocol SignInButtonDelegate: class {
func signIn()
}
class SignSubmitBTN: UIView {
// property for delegate
weak var delegate: SignInButtonDelegate?
@IBAction func submitAction(_ sender: Any) {
// this tells the delegate to sign in
// it doesn't need to know how that happens
delegate?.signIn()
}
@IBOutlet weak var subBTN: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {}
}
Затем в вашем контроллере представления высоответствовать протоколу делегата ...
extension SignUpViewController: SignInButtonDelegate {
func signIn() {
// here you already have access to all the data you need to sign in.
// you are in the view controller here so just get the text from the username, password, etc...
}
}
И затем установить контроллер представления в качестве делегата ...
func textFieldPreparation() {
let signInButton = Bundle.main.loadNibNamed("SignSubmitBTN", owner: self, options: nil)?.first as! SignSubmitBTN
signInButton.delegate = self
// these are properties... they should begin with a lowercase letter
emailTF.inputAccessoryView = signInButton
phoneTF.inputAccessoryView = signInButton
passwordTF.inputAccessoryView = signInButton
}