问题
import UIKit
class AccountViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var chooseButton: UIButton!
let imagePicker = UIImagePickerController()
@IBOutlet weak var mySwitch: UISwitch!
@IBOutlet weak var myStatus: UILabel!
@IBAction func mySwitchTapped(sender: AnyObject) {
updateSwitchStatus()
}
override func viewDidLoad() {
super.viewDidLoad()
updateSwitchStatus()
self.navigationController!.navigationBarHidden = true
self.view.backgroundColor = UIColor.whiteColor()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func updateSwitchStatus(){
if mySwitch.on{
myStatus.textColor = UIColor(colorLiteralRed: 0.142, green: 0.742, blue: 0.146, alpha: 1.00)
myStatus.text = "I'M ONLINE"
}
else{
myStatus.textColor = UIColor(colorLiteralRed: 0.896, green: 0.085, blue: 0.000, alpha: 1.00)
myStatus.text = "I'M OFFLINE"
}
}
@IBAction func shootPhoto() {
imagePicker.allowsEditing = false
imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
imagePicker.cameraCaptureMode = .Photo
imagePicker.modalPresentationStyle = .FullScreen
presentViewController(imagePicker,
animated: true,
completion: nil)
}
@IBAction func btnClicked(){
if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum)){
print("Button capture")
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum;
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: NSDictionary) {
self.dismissViewControllerAnimated(true, completion: {()-> Void in
})
imageView.image = image
}
I am using an updated version of swift. In ios9 alertview is not supported I guess. So how can I implement this alert asking to take pictures from gallery or camera roll?
回答1:
UIAlertView
still can be used but is deprecated starting from iOS 8. The preferred way to present an alert is using UIAlertController
with UIAlertControllerStyleAlert
style.
let alertController = UIAlertController(title: "Alert title", message: "Alert Message", preferredStyle: .Alert)
let cameraRollAction = UIAlertAction(title: "Camera Roll", style: .Default) { (action) in
self.imagePicker.delegate = self
self.imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum;
self.imagePicker.allowsEditing = false
self.presentViewController(self.imagePicker, animated: true, completion: nil)
}
alertController.addAction(cameraRollAction)
let takePictureAction = UIAlertAction(title: "Take a picture", style: .Default) { (action) in
self.imagePicker.allowsEditing = false
self.imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
self.imagePicker.cameraCaptureMode = .Photo
self.imagePicker.modalPresentationStyle = .FullScreen
self.presentViewController(self.imagePicker,
animated: true,
completion: nil)
}
alertController.addAction(takePictureAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
}
alertController.addAction(cancelAction)
self.presentViewController(alertController, animated: true) {
}
来源:https://stackoverflow.com/questions/34546900/how-to-create-an-alertview-for-a-button-prompting-to-take-pictures-from-gallery