由于我在通过故事板创建按钮时出现问题,因此我开始通过代码启动右侧导航栏按钮 - 通过此问题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)
}
然而,我受到了#34;使用本地变量'行动'在宣布之前'"。我不明白为什么这个解释不会执行/为什么我必须在它的唯一用途是函数名时建立动作变量?任何帮助将不胜感激。
更新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)
答案 0 :(得分:0)
应该是#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)
}