DatePicker & Alerts

DatePicker & Alert


Advanced usage of native UIAlertController with  DatePicker.

Features

  •  Custom pickers based on UIDatePicker.
  •  Example using a Storyboard.
  •  Easy contentViewController placement.
  •  Attributed title label and message label.
  •  Button customization: image and title color.
  •  Understandable action button placement.
  •  Easy presentation.
  •  Pure Swift 4

  • New Alert
  • let alert = UIAlertController(style: .alert, title: "Title", message: "Message")
    // or
    let alert = UIAlertController(style: .alert)
  • Set and styling title
  • alert.set(title: "Title", font: .systemFont(ofSize: 20), color: .black)
    // or
    alert.setTitle(font: .systemFont(ofSize: 20), color: .black)
  • Set and styling message
  • alert.set(message: "Message", font: .systemFont(ofSize: 16), color: .black)
    // or
    alert.setMessage(font: .systemFont(ofSize: 16), color: .black)
  • Add button with image
  • alert.addAction(image: image, title: "Title", color: .black, style: .default) { action in
        // completion handler
    }
  • Show Alert
  • // show alert
    alert.show()
    
    // or show alert with options
    alert.show(animated: true, vibrate: true) {
        // completion handler
    }

Pickers

For UX better to use .actionSheet style in UIAlertController when set picker into contentViewController. If you like you can use .alert style as well, buy .actionSheet style is wider and User can see more as well as action button is placing at bottom that also more convenience for User to touch it.
UITextField In native UIAlertController you can only add UITextField to .alert style with default style and you can not change such properties as .borderColor.borderWidth.frame.size and so on. But if you make your own UIViewController with UITextField, it will solve all these problems.


DatePicker

UIDatePicker does not look very much in .alert style.

@IBAction func onClickEvent(_ sender: UIButton) {
  let alert = UIAlertController(title: "Date", message: nil, preferredStyle: .actionSheet)
  alert.addDatePicker(mode: .dateAndTime, date: Date(), minimumDate: nil  , maximumDate: nil) { date in
  let dateFormatter = DateFormatter()
  dateFormatter.dateFormat = "dd - MMMM - YYYY"
  sender.setTitle(dateFormatter.string(from: date), for: .normal)
 }
 alert.addAction(title: "OK", style: .cancel)
 alert.show()
}



         - Patel Poorav

Comments

Popular posts from this blog

UISearchBar and UISearchBarDelegate

Easy way to learn Swift (IOS)