2016-04-18 9 views
0

Ich entließ meine UIImagePicker Dismissing mit:ein UIImagePicker

func imagePickerControllerDidCancel(picker: UIImagePickerController!) 
    { 
     picker.dismissViewControllerAnimated(true, completion: nil) 
    } 

Leider ist diese auch unterhalb der Ansicht wird abgewiesen. Ich möchte nicht, dass das passiert.

Ich habe die UIImagePicker wie so geladen:

let imagePicker: UIImagePickerController! = UIImagePickerController() 


@IBAction func uploadFromAlbumButton(sender : UIButton){ 
    let picker = UIImagePickerController() 
    picker.allowsEditing = true 
    picker.delegate = self 
    presentViewController(picker, animated: true, completion: nil) 
} 

Der Blick unter die UIImagePicker wie folgt dargestellt wird:

let newViewController = FulfilWishViewController(); 
newViewController.delegate = self 
navigationController?.pushViewController(newViewController, animated: true)  
+1

Können Sie uns sagen, wie Sie die Ansicht unter ImagePicker zeigen ? –

+1

Sie haben also SomeParentViewController, die FulfilWishViewController zeigt. Dann ruft FulfilWishViewController ImagePicker auf. Wenn ImagePicker imagePickerControllerDidCancel aufruft, wird es selbst ** und ** FulfilWishViewController abgewiesen. Sie haben also nur SomeParentViewController angezeigt. Richtig? –

+0

Ja genau, ich möchte aber, dass es auf FulfilWishViewController bleibt, anstatt zurück zum SomeParentViewController –

Antwort

0

Bitte überprüfen Sie, ob Sie einen Code in ViewWillAppear tat(). Denn nach dem Ablehnen von UIImagepickerController rufen Sie viewwillappear() des übergeordneten Controllers auf.

+0

Ich habe keinen Code in ViewWillAppear() –

0

Soweit ich verstanden, sollten Sie die nächste Struktur haben: Storyboard Auch sollte SecondViewController Storyboard-ID haben enter image description here

Ihre ViewController.swift:

class ViewController: UIViewController, UINavigationControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func didTapBtn1(sender: AnyObject) { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let secondViewController = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") 
     self.navigationController?.pushViewController(secondViewController, animated: true) 
    } 
} 

SecondViewController.swift:

class SecondViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func didTapBtn2(sender: AnyObject) { 
     let picker = UIImagePickerController() 
     picker.allowsEditing = true 
     picker.delegate = self 
     presentViewController(picker, animated: true, completion: nil) 
    } 

    func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
     picker.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

Dies Code wurde getestet. Ich denke, das Problem besteht darin, SecondViewController aufzurufen.

UPDATE:

Wenn Sie xib verwenden, so dass Sie die SecondViewcontroller über nennen:

@IBAction func didTapBtn1(sender: AnyObject) { 
    let secondViewController = SecondViewController(nibName: "SecondViewController", bundle: nil) 
    self.navigationController?.pushViewController(secondViewController, animated: true) 
} 

in Ihrem parent

+0

Danke für die gut ausgearbeitete Erklärung. Ich verwende jedoch kein Storyboard. Ich verwende separate .Xib-Dateien. Wie gehe ich in diesem Fall über dieses Instanziierungsproblem vor? –

+0

Nein, das ändert leider nicht die Art und Weise, wie die Abbrechen-Schaltfläche auf UIImagePicker reagiert. –

+0

Vielleicht noch ein paar Informationen, es gibt tatsächlich einen UITabBarController, der 4 Einträge hat, die zu UINavigationControllern werden, wenn sie so gedrückt werden: let item1 = UINavigationController (rootViewController: NewsFeedViewController (nibName: "NewsFeedView", bundle: nil)) –

Verwandte Themen