확인 및 취소를 통한 신속한 경고보기 : 어떤 버튼을 탭했습니까?


105

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

나는 아마도 버튼을 잘못 사용하고있을 것입니다. 이것은 저에게 완전히 새로운 것이기 때문에 저를 수정하십시오.


답변:


303

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)

Swift 5 업데이트 :

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)

4
당신은 당신의 예 UIAlertActionStyle.Cancel보다는를 사용할 수 있습니다 .Default.
Tristan Warner-Smith

작업 취소에서 아무 작업도하지 않으려면 아무것도 반환 할 수 없습니까?
가브리엘 로드리게스

물론 기술적으로는 로깅 외에는 아무것도하지 않습니다. 그러나 로그를 제거하면 아무것도하지 않을 것입니다.
Michael Wildermuth

1
답변이 새로운 스위프트의 버전을 업데이트 할 때 너무 좋아요
BlackTigerX

사람의 행동 "확인"에 대한 접근성 ID를 추가하고 "취소"하는 방법을 알고
Kamaldeep 싱 바 티아

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

4

신속한 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

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


0

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")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.