2015-04-07 4 views
0

Я пытаюсь создать проект с использованием this tutorial. Я сделал все, что мог, чтобы воссоздать код, но у меня есть некоторые проблемы. Вот мой код:Тема 1: сигнал SIGABRT при использовании IBActions?

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet var ImageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

@IBAction func choosePhoto(sender: AnyObject) { 

    let imagePickerController = UIImagePickerController() 
    imagePickerController.delegate = self 

    let actionSheet = UIAlertController(title: "Choose image source", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) 

    actionSheet.addAction(UIAlertAction(title: "Camera roll", style: UIAlertActionStyle.Default, handler: { (alert: UIAlertAction!) -> Void in 
     imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera 
     self.presentViewController(imagePickerController, animated: true, completion: nil) 
    })) 

    actionSheet.addAction(UIAlertAction(title: "Take Photo", style: UIAlertActionStyle.Default, handler: { (alert: UIAlertAction!) -> Void in 
     imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera 
     self.presentViewController(imagePickerController, animated: true, completion: nil) 
    })) 

    actionSheet.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)) 

    self.presentViewController(actionSheet, animated: true, completion: nil) 

} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { 
    let image: UIImage = info[UIImagePickerControllerOriginalImage] as UIImage 
    ImageView.image = image 
    picker.dismissViewControllerAnimated(true, completion: nil) 
} 

@IBAction func applyFilter(sender: AnyObject) { 

    applyFilterWithName("CIPhotoEffectMono") 


} 

func applyFilterWithName(filterName: String){ 
    let originlOrientation = ImageView.image!.imageOrientation 
    let originalScale = ImageView.image!.scale 

    let inputImage = CIImage(image : ImageView.image) 
    let drawingContext = CIContext(options: nil) 

    let filterParameters = [kCIInputImageKey: inputImage] 

    let filter = CIFilter(name: filterName, withInputParameters: filterParameters) 

    let outputImage = filter.outputImage 

    let imageRef = drawingContext.createCGImage(outputImage, fromRect: outputImage.extent()) 

    ImageView.image = UIImage(CGImage: imageRef, scale: originalScale, orientation: originlOrientation) 


} 

@IBAction func saveImage(sender: AnyObject) { 

    UIImageWriteToSavedPhotosAlbum(ImageView.image, nil, nil, nil) 

} 

Я знаю, что это основная часть вывода отладчика я должен смотреть на: Я не могу показаться, чтобы выяснить, где эта ошибка

Image Filter[20320:1554357] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Source type 1 not available'

или как его исправить. Еще раз я сделал все возможное, чтобы воссоздать код, но могут быть ошибки.

Любые предложения или предложения были бы весьма полезными.

Заранее спасибо.

ответ

2

Ваш код бессмыслен. Вы говорите:

actionSheet.addAction(UIAlertAction(title: "Camera roll", style: UIAlertActionStyle.Default, handler: { (alert: UIAlertAction!) -> Void in 
    imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera 
    self.presentViewController(imagePickerController, animated: true, completion: nil) 
})) 

Если пользователь собирается нажать на кнопку «Фотопленка», почему бы вам тогда создать контроллер сборщика изображения с типом источника в Camera? Это не то, что попросил пользователь.

Ошибка, кстати, просто означает, что камеры нет. Вы не пытаетесь запустить этот код в Симуляторе, не так ли? Это было бы бессмысленно. Камера существует только на устройстве - устройстве с камерой.

+1

Я запускаю это на симуляторе. Теперь это имеет смысл. Я думал, что у Симулятора есть Камера для какой-то немой причины. Спасибо за ответ. Он исправил проблему – Bigfoot11

Смежные вопросы