如何在Swift中解除UIImagePickerController后切换到另一个视图?

时间:2015-10-13 03:35:00

标签: ios iphone swift xcode6.4

我正在尝试拍照,调整尺寸,然后点按“#34;使用照片"并切换到显示原始图像和编辑图像的新视图。麻烦的是在点击"使用照片"后显示新视图。使用我当前的代码,我可以解雇ImagePickerController,但它会回到主视图然后我得到一个黑屏。

    @IBAction func pickerButton(button: UIButton)
{
    var controller : UIImagePickerController = UIImagePickerController();
    controller.delegate = self
    //controller.allowsEditing = true
    self.presentViewController(controller, animated: true, completion: nil)

}    

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
{
    var mediaDictionary : NSDictionary = info as NSDictionary

    println("here it comes")

    var pickerMedia : String = mediaDictionary.objectForKey("UIImagePickerControllerMediaType") as! String
    dump(pickerMedia)

    if (pickerMedia == "public.image"){
        ///////Loading dictionaries for value pairs that don't exist as of video capture video
        var anImage : UIImage = mediaDictionary.objectForKey("UIImagePickerControllerOriginalImage") as! UIImage

        /////////Optional for edited image
        var editedImage : UIImage = mediaDictionary.objectForKey("UIImagePickerControllerEditedImage") as! UIImage

    // Dismiss the image picker         
    picker.dismissViewControllerAnimated(true, completion: nil)
    // Here is my issue...
    var svc : decisionController = decisionController()
    self.presentViewController(svc, animated: true, completion: nil)

    }

我的decisionController视图位于一个单独的swift文件中,它位于我的故事板中。它将类设置为decisionController。我通常会在下一个视图中创建一个segue但是我没有引用按钮,因为我使用的是通用的UIImagePickerController。

这是我的decisionController.swift

import UIKit

class decisionController: UIViewController {

    @IBOutlet var anImageView : UIImageView?
    @IBOutlet var anotherImageView : UIImageView?

    override func viewDidLoad() {

        super.viewDidLoad()

        //anImageView!.image = anImage
        //anotherImageView!.image = editedImage

        // Do any additional setup after loading the view, typically from a nib.
    }
}

1 个答案:

答案 0 :(得分:1)

如果要在不使用segue的情况下从故事板加载场景,可以通过向故事板中的场景添加Storyboard ID,然后在故事板上调用instantiateViewControllerForIdentifier:来实现。

假设呈现视图控制器位于同一个故事板中,通过在故事板中选择视图控制器并在身份检查器中填写Storyboard ID下的值来设置Storyboard ID后,此代码应该可用(命令选项) -3)。

替换:

// Here is my issue...
var svc : decisionController = decisionController()
self.presentViewController(svc, animated: true, completion: nil)

使用:

let svc = self.storyboard!.instantiateViewControllerWithIdentifier("decisionControllerStoryboardID") as! decisionController
self.presentViewController(svc, animated: true, completion: nil)