【问题标题】:programmatically tap UIButton swift以编程方式快速点击 UIButton
【发布时间】:2016-07-27 17:32:48
【问题描述】:

直接问题:

如何在 Swift 2.0 中以编程方式点击 UIButton?

例如:UIButton.tap()

为什么我不能直接调用按钮点击功能的解释:

我目前正在使用 AKSwiftSlideMenu (https://github.com/ashishkakkad8/AKSwiftSlideMenu) (https://www.cocoacontrols.com/controls/akswiftslidemenu) 创建菜单。这是通过将菜单视图控制器作为子视图添加到主视图控制器来实现的。

let menuVC : BackTableViewController = self.storyboard!.instantiateViewControllerWithIdentifier("backTableViewController") as! BackTableViewController
    menuVC.btnMenu = sender

    self.view.addSubview(menuVC.view)
    self.addChildViewController(menuVC)

如您所见,btnMenu,即UIButton,正在传递给menuVC。在两个视图控制器上拥有相同的按钮允许在主视图控制器中使用单个 onSlideMenuButtonPressed(sender : UIButton) 函数来处理 menuVC 的呈现。我正在创建的菜单中的一个选项是“注销”按钮,它显示UIAlertViewController,询问用户是否要注销。以下是我在menuVC 中的“是”按钮处理程序的代码:

        logOutAlert.addAction(UIAlertAction(title:"Yes", style: .Default, handler:  { action in 
        self.btnMenu.touchInside
        CURRENT_USER.unauth()
        NSUserDefaults.standardUserDefaults().setValue(nil, forKey: "uid")
        print("User logged out")
        CurrentUser.checkIfUserIsLoggedIn()
    }))

我正在尝试使用 touchInside 方法(当然这是不对的)点击按钮以关闭 menuVC 。是否有 UIButton.tap() 等价物或访问 btnMenu onSlideMenuButtonPressed(sender : UIButton) 函数的方法?

旁注: 我尝试了为menuVC 创建一个homeViewControllerDelegate 对象以直接调用onSlideMenuButtonPressed(sender : UIButton) 的想法,这可能会起作用,但它似乎是一种迂回的方式,因为btnMenu 已经引用了该函数。

【问题讨论】:

    标签: swift uibutton akswiftslidemenu


    【解决方案1】:

    你试过了吗:

    myAutomatedButton.sendActionsForControlEvents(.TouchUpInside)
    

    这似乎是以前的问题并且可能重复,但我发现的帖子是:how to programmatically fake a touch event to a UIButton?

    +1 代表 Swift 3/4:@Eneko Alonso

    【讨论】:

    • 超级。很高兴我能帮上忙。
    • myAutomatedButton.sendActions(for: .touchUpInside) 斯威夫特 3/4
    【解决方案2】:

    还定义了@IBAction 可以直接调用它:

    @IBAction func myButtonAction(_ sender: UIButton) {
        // do something
    }
    
    func otherMethod() {
       self.myButtonAction(UIButton())
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多