编程iOS按钮可在第一次点击时执行操作,然后在第二次点击时进行搜索

时间:2018-09-03 04:31:26

标签: swift segue uistoryboardsegue ibaction

我正在构建第三方iOS应用。作为我的主视图控制器的一部分,我为用户提供了一个选项,即可以按按钮直接链接到iOS键盘设置,以便他们可以启用我的键盘。当他们返回到应用程序时,会将他们带到下一个视图,在这里他们可以在空白文本字段上测试键盘。

当用户点击应用程序上的启用键盘按钮时,我将调用IBAction将其链接到设置应用程序,如下所示:

@IBAction func enableKeyboard(_ sender: Any) {
        let settingsUrl = URL(string: "\(UIApplicationOpenSettingsURLString)")!
        UIApplication.shared.open(settingsUrl)
    }

但是,我同时对textViewController进行了设置,以便当用户从设置返回到应用程序时,他们立即转到textViewController。

enter image description here

我该如何编程我的按钮,以便第一次点击将它们设置为设置,它们返回主视图控制器,然后第二次点击将它们带到下一个视图?

2 个答案:

答案 0 :(得分:1)

翻转按钮的选定状态,然后在确定操作方式时对其进行测试。

@IBAction func touchUpInside(button: UIButton) {
    if !button.isSelected {
        button.isSelected = true
        // Now open settings
    } else {
       // Perform segue
    }
}

按钮类旨在跟踪自己的状态,因此我认为这比在只需要两个状态的视图控制器中对变量进行跟踪更好。

答案 1 :(得分:0)

您可以向控制器添加一些状态。 不仅适用于2个状态(“打开设置”和“打开下一个视图”),您还可以管理更多状态。

您可以在控制器中添加状态变量:

enum ControllerState {
    case needSettings, needNext
}
private var state: ControllerState = .needSettings

@IBAction func yourButtonHandler(sender: UIButton) {
    switch state {
    case .needSettings:
        state = .needNext
        // Open settings
    case .needNext:
        // Open next view controller
    }
}