2016-08-28 18 views
6

ABAddressBook ile, kullanıcının bir kişi için "Yeni Kişi Oluştur" ve "Varolan Kişiye Ekle" seçeneklerine sahip olmasını istedim Daha önce görmemişlerdi, ben bir ABUnknownPersonViewController yaratır ve sunardım.CNContactViewController() için "Yeni Kişi Oluştur" ve "Varolan Kişiye Ekle"()

Bu işlevselliği CNContacts çerçevesinde çoğaltmanın bir yolunu bulamıyorum. Bana CNContactViewController(forUnknownContact: contact)'un işe yarayabildiği görünüyordu, ama ne yazık ki bu sadece kullanıcının "Mesaj Gönder" ya da "Paylaşma Paylaşımı" na izin veriyor.

Kişinin, kişiyi adres defterine yeni bir kişi olarak veya varolanın bir parçası olarak CNContacts'a kaydetmesine nasıl izin verebilirim? Ben erişimi talep çalıştığınızda

func presentContact() { 

    let status = CNContactStore.authorizationStatusForEntityType(.Contacts) 

    switch status { 
    case .Authorized:() 
    case .NotDetermined: requestAccess() 
    case .Denied, .Restricted: accessDenied() 
    } 

    print("authorized? \(status == .Authorized)") //prints "authorized? true" 

    let unknown = CNContactViewController(forUnknownContact: contact!) 

    unknown.delegate = self 

    self.navigationController?.pushViewController(unknown, animated: false) 

} 

bile, kullanıcı yine kişiyi kaydedemezsiniz.

+1

Birisi aşağı oylarını açıklayabilir mi? – 5813

+0

Çünkü gerçek kodu göstermiyorsunuz. Kodunu göster! Hala her türlü önemli parçayı dışarıda bırakıyorsunuz ve bunu yapıp yapamayacağınızı bilmediğinizden mi, yoksa kodunuzu Stack Overflow'a yapıştırarak tembel olmanızdan dolayı bunu söyleyemem. Iletişim nedir? "Bilinmeyen" ın contactStore'u ayarladığınız satırı göster. Bu şeylerin hepsi önemlidir. _GÖSTERMEK. SİZİN. GERÇEK. CODE._ – matt

+0

Hala hangi parçalardan çıkıyorum? 'contact', herhangi bir özellik kümesi ile keyfi bir 'CNContact'. Bunun, gösterilmeyen eylem düğmeleri üzerinde nasıl bir etkisi olabileceğinden emin değilim. Sorunun ortaya çıktığı 'bilinmeyen' contactStore 'özelliği ayarlanmış olması dışında her şey burada. Yardım ettiğin için teşekkür ederim. Minimal bir tekrarlanabilir örnek yapmak için bazı köşeleri kesersem özür dilerim; Bunu takip etmek için mümkün olduğunca basit ve kolay hale getirmeye çalışıyordum. – 5813

cevap

11

numaralı telefon numaranızı gerçek kodunuzda gösterilmediğinden, size yardımcı olması imkansızdır. Böylece ilgimi kaybettim. Bunun yerine size benim gerçek kodumu göstereceğim ve size çalışıp ne yaptığınızı ve yaptığınız şey arasındaki farkı düşünmeye bırakacağım. İşte gerçek çalışma kodu; ye gidip aynı şeyleri: Bir CNContactStore bir sap için unknown değişkenin contactStore özelliğini ayarlıyor kodunuzda eksik kalanlar

let con = CNMutableContact() 
con.givenName = "Johnny" 
con.familyName = "Appleseed" 
con.phoneNumbers.append(CNLabeledValue(
    label: "woods", value: CNPhoneNumber(stringValue: "555-123-4567"))) 
let unkvc = CNContactViewController(forUnknownContact: con) 
unkvc.message = "He knows his trees" 
unkvc.contactStore = CNContactStore() 
unkvc.delegate = self 
unkvc.allowsActions = false 
self.navigationController?.pushViewController(unkvc, animated: true) 

enter image description here

+0

Burada açıkladığım hataya dikkat edin: http://stackoverflow.com/q/32973254/341994 – matt

+0

Yukarıda belirtilenler _really_, _actually_ gerçek kodum. Satır için satır, kelime için kelime, benim '.swift' dosyalarından birinde var. 'ContactStore' ayarlanamadı; bana yardım ettin. – 5813

0

.

[...] 

unknown.contactStore = CNContactStore() 

[...] 
İlgili konular