2016-08-28 17 views
6

Với ABAddressBook, khi tôi muốn người dùng có thể có tùy chọn "Tạo liên hệ mới" và "Thêm vào liên hệ hiện tại" cho một liên hệ họ chưa từng thấy trước đây, tôi sẽ tạo ra và trình bày một số ABUnknownPersonViewController."Tạo liên hệ mới" và "Thêm vào liên hệ hiện tại" cho CNContactViewController()

Tôi không thể tìm cách sao chép chức năng này trong khung công tác CNContacts. Dường như với tôi rằng CNContactViewController(forUnknownContact: contact) có thể hoạt động nhưng rất tiếc, điều này chỉ cho phép người dùng "Gửi tin nhắn" hoặc "Chia sẻ liên hệ".

Làm cách nào để cho phép người dùng lưu liên hệ vào sổ địa chỉ của họ, dưới dạng liên hệ mới hoặc như một phần của địa chỉ liên hệ hiện có, trong CNContacts?

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) 

} 

Ngay cả khi tôi cố gắng để yêu cầu truy cập, người dùng vẫn có thể không lưu số liên lạc.

+1

Ai đó có thể giải thích cuộc bỏ phiếu của họ xuống? – 5813

+0

Vì bạn không hiển thị mã thực. Hiển thị mã của bạn! Bạn vẫn đang bỏ qua tất cả các loại phần quan trọng, và tôi không thể biết đó là bởi vì bạn không biết rằng bạn nên làm chúng hay vì bạn chỉ lười biếng trong việc dán mã của bạn vào Stack Overflow. 'Liên hệ' là gì? Hiển thị dòng nơi bạn đặt 'contactStore' của' unknown'. Những điều đó đều quan trọng. _CHỈ. CỦA BẠN. THỰC. CODE._ – matt

+0

Phần quan trọng nào tôi vẫn bỏ ra? 'contact' là một' CNContact' tùy ý với bất kỳ số thuộc tính nào được đặt. Tôi không chắc làm thế nào mà có thể có hiệu lực trên các nút hành động không được hiển thị. Mọi thứ đều ở đây ngoại trừ thuộc tính 'contactStore' của' unknown' đang được thiết lập, điều này hóa ra là vấn đề. Cảm ơn bạn đã giúp đỡ. Tôi xin lỗi nếu tôi cắt một số góc trong việc đưa ra một ví dụ tái sản xuất tối thiểu; Tôi đã cố gắng làm cho nó đơn giản và dễ dàng nhất có thể để làm theo. – 5813

Trả lời

11

Bạn không hiển thị mã thực sự của mình, vì vậy không thể giúp bạn. Vì vậy, tôi đã mất hứng thú. Thay vào đó, tôi sẽ chỉ hiển thị cho bạn mã số thực sự của tôi và để bạn nghiên cứu nó và suy nghĩ về sự khác biệt giữa những gì tôi đang làm và những gì bạn đang làm. Đây là mã làm việc thực tế; hãy đi và làm tương tự như vậy:

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

Hãy coi chừng, tuy nhiên, của lỗi tôi mô tả ở đây: http://stackoverflow.com/q/32973254/341994 – matt

+0

Những gì được đăng ở trên _really_, _actually_ là mã thực của tôi. Dòng cho dòng, từng chữ, đó là những gì tôi có trong một trong các tệp '.swift' của tôi. Không đặt 'contactStore' là vấn đề; bạn đã giúp tôi. – 5813

0

gì bạn đang thiếu trong mã của bạn được thiết lập contactStore tài sản của biến unknown của bạn vào một tay cầm của một CNContactStore.

[...] 

unknown.contactStore = CNContactStore() 

[...] 
Các vấn đề liên quan