我正在以编程方式编写应用程序(没有故事板)并拥有登录屏幕。登录屏幕上有用于登录用户详细信息的输入框以及登录和注册按钮。
按下按钮后,如何以编程方式与按钮进行交互以有效地执行新视图?
我知道对于导航按钮我会使用
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout))
但是视图控制器中的任何按钮是否等效?我确信它有,它可能是一个简单的问题,但任何帮助将不胜感激。
我的按钮代码是
let registerButton: UIButton = {
let button = UIButton(type: .system)
button.backgroundColor = UIColor.black
button.setTitle("Register", for: .normal)
button.layer.cornerRadius = 5
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
并作为子视图添加到登录页面
view.addSubview(registerButton)
感谢。
答案 0 :(得分:1)
segue
是Interface Builder术语。在iOS中,您只能以三种方式显示视图控制器:push
,present
,show
。以编程方式,你不会称之为segue。首先,在按钮上添加目标:
registerButton.addTarget(self, action: #selector(registerButtonAction), for: .touchUpInside)
创建操作方法:
@objc func registerButtonAction() {
...
}
如果你想push
到视图控制器(使用导航控制器),请从动作方法内部推送到它:
@objc func registerButtonAction() {
let destination = SomeViewController()
navigationController?.pushViewController(destination, animated: true)
}
如果你想呈现它(模态):
@objc func registerButtonAction() {
let destination = SomeViewController()
destination.transitioningDelegate = SomePresentationAnimationVendor() // for custom presentations
destination.modalPresentationStyle = .custom // for custom
present(destination, animated: true, completion: nil)
}
答案 1 :(得分:0)
你应该为你的按钮编写功能并将其分配给按钮
override func viewDidLoad() {
super.viewDidLoad()
...
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
}
func buttonAction(sender: UIButton!) {
print("Button tapped")
}
答案 2 :(得分:0)
向您添加目标按钮,以便在点击按钮时执行功能。
registerButton.addTarget(self, action: #selector(self.registerTapped(_:)), for: .touchUpInside)
创建函数registerTapped
。
// Swift 4 requires @objc
@objc func registerTapped(_ sender: UIButton){
// Segue here
}
编写您的segue代码并将其放在registerTapped
self.performSegue(withIdentifier: "segueName", sender: nil)
现在一起
override func viewDidLoad() {
super.viewDidLoad()
registerButton.addTarget(self, action: #selector(self.registerTapped(_:)), for: .touchUpInside)
}
@objc func registerTapped(_ sender: UIButton) {
self.performSegue(withIdentifier: "segueName", sender: nil)
}