如何向以编程方式制作的按钮添加操作?
How to add action to a programmatically-made button?
由于我在通过情节提要创建按钮时遇到问题,我着手通过代码启动右侧导航栏按钮 - 通过这个问题 How can I go back to the initial view controller in Swift? 找到。此代码旨在将我带回我的根视图控制器。
这是目前的代码。
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(getter: UIDynamicBehavior.action))
self.navigationItem.rightBarButtonItem = button1
func button() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
我的印象是,如果我要更改
action: #selector(getter: action)
我可以像这样在这个按钮初始化之后创建一个函数
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
不过,迎接我的是"Use of local variable 'action' before its declaration'"。我不明白为什么这个解释不会 perform/why 当它只使用一个函数名时我必须建立动作变量?任何帮助将不胜感激。
更新 1:当前代码
override func viewDidLoad() {
super.viewDidLoad()
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(action))
self.navigationItem.rightBarButtonItem = button1
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
更新 1:还必须使用不同的函数操作才能返回到原始视图控制器。
self.navigationController!.popToRootViewController(animated: true)
应该是#selector(action)
。您可以在函数内定义函数。将 action
移到 viewDidLoad
函数之外。试试这个。
override func viewDidLoad() {
super.viewDidLoad()
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(action))
self.navigationItem.rightBarButtonItem = button1
}
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
由于我在通过情节提要创建按钮时遇到问题,我着手通过代码启动右侧导航栏按钮 - 通过这个问题 How can I go back to the initial view controller in Swift? 找到。此代码旨在将我带回我的根视图控制器。
这是目前的代码。
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(getter: UIDynamicBehavior.action))
self.navigationItem.rightBarButtonItem = button1
func button() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
我的印象是,如果我要更改
action: #selector(getter: action)
我可以像这样在这个按钮初始化之后创建一个函数
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
不过,迎接我的是"Use of local variable 'action' before its declaration'"。我不明白为什么这个解释不会 perform/why 当它只使用一个函数名时我必须建立动作变量?任何帮助将不胜感激。
更新 1:当前代码
override func viewDidLoad() {
super.viewDidLoad()
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(action))
self.navigationItem.rightBarButtonItem = button1
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
更新 1:还必须使用不同的函数操作才能返回到原始视图控制器。
self.navigationController!.popToRootViewController(animated: true)
应该是#selector(action)
。您可以在函数内定义函数。将 action
移到 viewDidLoad
函数之外。试试这个。
override func viewDidLoad() {
super.viewDidLoad()
let button1 = UIBarButtonItem(image: UIImage(named: "HomeM25.png"), style: .plain, target: self, action: #selector(action))
self.navigationItem.rightBarButtonItem = button1
}
func action() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}