1

Ich habe an diesem Problem für ein bisschen gearbeitet, aber kann nichts zur Arbeit bringen. Ich habe eine View-Controller, die effektiv in der Haupt Storyboard steht. Innerhalb dieses View-Controllers, wenn eine bestimmte Aktion stattfindet, die einen Kontakttyp an die Aktion übergibt.IOS Swift CNContactViewController Navigationsleiste, die UINavigation Controller nicht zeigt

Die Aktion öffnet einen neuen Kontaktansicht-Controller für den übergebenen Kontakt und ermöglicht dem Benutzer die Interaktion mit dem Kontakt über den CNContactViewController. Sobald der Benutzer mit dem Kontakt fertig ist, wird er aufgrund der didCompleteWith-Methode geschlossen, aber es gibt keine Möglichkeit, den Kontaktcontroller zu beenden, ohne den Kontakt tatsächlich zu erstellen.

//change to new contact screen 
let con = CNMutableContact() 
con.givenName = familyComponents[0] 
con.familyName = familyComponents[1] 

let newEmail = CNLabeledValue(label: "Personal", value: objectComponents[2] 
as NSString) 
con.emailAddresses.append(newEmail) 
con.phoneNumbers.append(CNLabeledValue(
label: "Home", value: CNPhoneNumber(stringValue: objectComponents[3]))) 
let newScreen = CNContactViewController(forUnknownContact: con) 
newScreen.message = "Made using app" 
newScreen.contactStore = CNContactStore() 
newScreen.delegate = self 
newScreen.allowsActions = true 
let navigationController = UINavigationController(rootViewController: 
newScreen) 
self.present(navigationController, animated: true, completion: nil) 

ich alles von navigationItems zu navigationItems versucht haben, scheint es mir, dass die Navigationsleiste gibt es, weil es möglich ist, seine Durchsichtigkeit mit dieser Codezeile zu ändern:

navigationController.navigationBar.isTranslucent = true 

Methoden finden :

Irgendwelche Vorschläge würden sehr geschätzt werden, ich habe mit diesem Problem für zu lange gekämpft. Danke!

Gelöst: Habe es zur Arbeit. Es stellt sich heraus, dass dies ein Fehler im Rahmen von Äpfeln ist. Um dieses Problem zu lösen, habe ich es nur von "Unbekannter Kontakt" zu "Neuer Kontakt" geschaltet, der diesen Fehler anscheinend nicht hat. Teil neuen Code:

let newScreen = CNContactViewController(forNewContact: con) 
newScreen.delegate = self 
let navigationController = UINavigationController(rootViewController: newScreen) 
self.present(navigationController, animated: true, completion: nil) 

Dank

+0

nach didcomplete nicht der Navigation zeigt oder vor? –

+0

Bevor ich fertig war, ohne die Navigationsleiste zu zeigen, brauche ich eine alternative Methode, um den Vorgang abzubrechen. – shuson

Antwort

1

können Sie mit diesem Code versuchen

let con = CNMutableContact() 
con.givenName = familyComponents[0] 
con.familyName = familyComponents[1] 

let newEmail = CNLabeledValue(label: "Personal", value: objectComponents[2] 
as NSString) 
con.emailAddresses.append(newEmail) 
con.phoneNumbers.append(CNLabeledValue(
label: "Home", value: CNPhoneNumber(stringValue: objectComponents[3]))) 
let unkvc = CNContactViewController(forUnknownContact: con) 

           unkvc.delegate = self 
           unkvc.allowsEditing = true 
           unkvc.allowsActions = true 
           unkvc.title = "Edit Contact" 

    self.navigationController?.isNavigationBarHidden = false 

    self.navigationController?.navigationItem.hidesBackButton = true 

    self.navigationController?.pushViewController(unkvc, animated: false) 
+0

Das hat nicht funktioniert. Öffnet den neuen Controller nicht. – shuson

+0

Siehe bearbeitete Antwort. – shuson

+0

Danke! Mein Problem war in versteckter Navigationsleiste für den aktuellen navigationController – moonvader

Verwandte Themen