web-dev-qa-db-ja.com

[OK]をクリックしてアラートビュー(iOS 8)をすばやく表示し、[キャンセル]ボタンをクリックしたときにタップされたボタン

私はSwiftで書かれたXcodeのアラートビューを持っています、そして私は何もしないか何かを実行するためにユーザーがどのボタンを選択したか(それは確認ダイアログです)を決定したいです。現在私は持っています:

@IBAction func pushedRefresh(sender: AnyObject) {
        var refreshAlert = UIAlertView()
        refreshAlert.title = "Refresh?"
        refreshAlert.message = "All data will be lost."
        refreshAlert.addButtonWithTitle("Cancel")
        refreshAlert.addButtonWithTitle("OK")
        refreshAlert.show()
    }

私はおそらく間違ったボタンを使っています、これは私にとって全く新しいので私を訂正してください。

ありがとうございました!

94
B_s

IOS8を使用している場合は、UIAlertControllerを使用する必要があります - UIAlertViewは 廃止予定 です。

これを使用する方法の例は次のとおりです。

var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
  print("Handle Ok logic here")
  }))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
  print("Handle Cancel Logic here")
  }))

presentViewController(refreshAlert, animated: true, completion: nil)

ご覧のとおり、UIAlertActionのブロックハンドラがボタンを押します。素晴らしいチュートリアルがここにあります(このチュートリアルはSwiftを使って書かれていません): http://hayageek.com/uialertcontroller-example-ios/

Swift 3アップデート:

let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
    print("Handle Ok logic here")
}))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
    print("Handle Cancel Logic here")
}))

present(refreshAlert, animated: true, completion: nil)
286
var refreshAlert = UIAlertController(title: "Log Out", message: "Are You Sure to Log Out ? ", preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction(UIAlertAction(title: "Confirm", style: .Default, handler: { (action: UIAlertAction!) in
    self.navigationController?.popToRootViewControllerAnimated(true)
}))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in

    refreshAlert .dismissViewControllerAnimated(true, completion: nil)


}))

presentViewController(refreshAlert, animated: true, completion: nil)
17
A.G

あなたは簡単にUIAlertControllerを使用してこれを行うことができます

let alertController = UIAlertController(
       title: "Your title", message: "Your message", preferredStyle: .alert)
let defaultAction = UIAlertAction(
       title: "Close Alert", style: .default, handler: nil)
//you can add custom actions as well 
alertController.addAction(defaultAction)

present(alertController, animated: true, completion: nil)

参照: iOS Show Alert

3
Shaba Aafreen

Swift 3向けに更新:

//関数の定義:

@IBAction func showAlertDialog(_ sender: UIButton) {
        // Declare Alert
        let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to Logout?", preferredStyle: .alert)

        // Create OK button with action handler
        let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
             print("Ok button click...")
             self.logoutFun()
        })

        // Create Cancel button with action handlder
        let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in
            print("Cancel button click...")
        }

        //Add OK and Cancel button to dialog message
        dialogMessage.addAction(ok)
        dialogMessage.addAction(cancel)

        // Present dialog message to user
        self.present(dialogMessage, animated: true, completion: nil)
    }

// logoutFun()関数の定義:

func logoutFun()
{
    print("Logout Successfully...!")
}
3
Kiran jadhav

UIAlertViewまたはUIAlertControllerの代わりに、SCLAlertViewを使用することを検討してください。

UIAlertControllerはiOS 8.x以上でのみ動作します。SCLAlertViewは古いバージョンをサポートするための良いオプションです。

github 詳細を見る

例:

let alertView = SCLAlertView()
alertView.addButton("First Button", target:self, selector:Selector("firstButton"))
alertView.addButton("Second Button") {
    print("Second button tapped")
}
alertView.showSuccess("Button View", subTitle: "This alert view has buttons")
0
Soon Khai