2

Ich versuche, den Benutzer einen neuen Kontakt erstellen zu lassen. Während ich den Bildschirm habe, um den Benutzer aufzufordern, alle seine Details einzugeben, gibt es oben keine Navigationsleiste (wie es in der Apple Contacts Standard App der Fall ist). Es gibt keine Möglichkeit, die Szene zu verlassen. Ich verwende das ContactUI-Framework in Swift 2.0 und Xcode 7.3. Hier ist der Code:Neuer Kontakt kann nicht geschlossen werden CNContactViewController, keine Leiste oben

// create a new contact 
    let createNewActionHandler = {(action: UIAlertAction) -> Void in 
     let newContact = CNMutableContact() 

     let contactPicker = CNContactViewController(forNewContact: newContact) 
     contactPicker.delegate = self 
     contactPicker.navigationController?.setToolbarHidden(false, animated: false) 
     self.presentViewController(contactPicker, animated: true, completion: nil) 

    } 

Hier ist, was ich zu bekommen habe versucht: Apple Default

Hier ist, was ich habe: What I have

ich den Start des neuen Kontakt-View-Controller von einem Aktionsblatt in einem Registerkarten-Controller. Ich habe versucht, die Registerkarte in einen Navigationsansicht-Controller einzubetten, aber ohne Wirkung. Ich habe sogar versucht, die Eigenschaft setToolbarHidden des navControllers zu setzen, aber es hat nicht geholfen.

Danke für jede Hilfe. Ich habe das Problem in anderen Foren gesehen, aber es hat nicht geholfen.

+0

Markieren Sie meine Antwort, wenn möglich – SPatel

Antwort

3

Die View-Controller müssen in UINavigationController eingebettet sein, und Sie sollten View-Controller drücken oder zeigen:

navigationController?.pushViewController(contactPicker, animated: true) 

statt präsentiert View-Controller

3

Da Sie den contactPicker viewcontroller über dem aktuellen aktiven Controller präsentieren, haben Sie keinen Zugriff auf die Navigationsleiste, da die Ansicht vollständig dargestellt wird. Wenn Sie Schaltflächen wie in der Apple contact app haben möchten, müssen Sie Ihren präsentierenden viewcontroller in den Browser einbetten UINavigationController, und fügen Sie linke und rechte Balkenschaltfläche hinzu.

Verweisen Sie auf die folgende Apfelprobe, die das gleiche zeigt. https://developer.apple.com/library/ios/samplecode/iPhoneCoreDataRecipes/Listings/Classes_RecipeAddViewController_m.html

+0

Das hat funktioniert, danke! –

5

Sie haben contactViewController zu UINavigationController und Implementieren Delegierten einzubetten Methoden.

let createNewActionHandler = {(action: UIAlertAction) -> Void in 
    let newContact = CNMutableContact() 

    let contactPicker = CNContactViewController(forNewContact: newContact) 
    contactPicker.delegate = self 
    let navigation = UINavigationController(rootViewController: contactPicker) 
    self.presentViewController(navigation, animated: true, completion: nil) 

} 


//MARK: - Delegate 

    func contactViewController(viewController: CNContactViewController, didCompleteWithContact contact: CNContact?) { 
     viewController.dismissViewControllerAnimated(true, completion: nil) 
    } 

    func contactViewController(viewController: CNContactViewController, shouldPerformDefaultActionForContactProperty property: CNContactProperty) -> Bool { 
     return true 
    } 
Verwandte Themen