swift - 如何向以编程方式制作的按钮添加操作?

标签 swift function button action

由于我在通过 Storyboard 创建按钮时遇到问题,因此我开始通过代码启动右侧导航栏按钮 - 通过此问题 How can I go back to the initial view controller in Swift? 找到。这段代码的目的是带我回到我的 Root View Controller 。

这是目前的代码。

 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)
    }

但是,我收到了“在声明之前使用局部变量‘action’”。我不明白为什么这种解释无法执行/为什么我必须建立 Action 变量,而它的唯一用途是函数名称?任何帮助将不胜感激。

更新 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:还必须使用不同的函数操作返回到原始 View Controller 。

    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)
}

关于swift - 如何向以编程方式制作的按钮添加操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704511/

相关文章:

swift - 将 Java 三部分 for 循环转换为 Swift

function - 为什么 'fputc'使用INT代替CHAR作为其参数?

javascript - 下载按钮可保存已在线的内容

image - QT QPushButton,带有图标和覆盖居中的文本

ios - 使用 Firebase Auth 时应用崩溃,原因 : 'Default app has already been configured.'

swift - 在 Swift 中创建 "Array"的 "Dictionary"

javascript - 一个代码多种功能

javascript - 如何从子函数中取出父函数 'return' ?

html - IE上的paypal按钮问题

ios - 在后台将带标题的照片分享到 Facebook