2017-09-15 1 views
0

후 다시 응용 프로그램으로 이동 한 다음 코드로 ContactUI를 엽니 다IOS ContactUI 내 자 마린 iOS 앱에서 편집

var contact = new AddressBookService().GetCNContactById(addressbookId); 
var view = CNContactViewController.FromNewContact(contact); 
view.Editing = true; 

// Display the view 
var window = UIApplication.SharedApplication.KeyWindow; 
var vc = window.RootViewController; 
while (vc.PresentedViewController != null) 
{ 
    vc = vc.PresentedViewController; 
} 

var navController = vc as UINavigationController; 
if (navController != null) 
{ 
    vc = navController.ViewControllers.Last(); 
} 
vc.PresentViewController(new UINavigationController(view), true, null); 

나는 그것이 INavigationController에서 포장 때문에로드하지 않고. 출력에 다음 메시지가 인쇄됩니다.

[CNUI ERROR] Contact view delayed appearance timed out 

편집 대화 상자가 올바르게 표시됩니다. 하지만 저장을 클릭 한 후 나는 세부 사항에 와서보기 : 당신이 볼 수 있듯이

enter image description here

는 더 뒤로 버튼이 없다는 것을, 두 번째 문제입니다. 따라서 내 앱으로 돌아가는 유일한 방법은 앱을 종료하고 다시 시작하는 것입니다. 연락처를 저장 한 후 내 앱으로 직접 이동하는 방법이 있습니까? 또는 현재 ViewController에서 ContactUI를 래핑하여 TabBar이 여전히 아래에 표시되도록할까요?

답변

1

CNContactViewControllerDelegate을 구현하고 CNContactViewController의 DidComplete 대리자를 사용하십시오. DidComplete은 '완료'버튼을 클릭하면 시작됩니다.

  1. 설정 대표 :

    var view = CNContactViewController.FromNewContact(contact); 
    view.Delegate = new MyCNConatactViewControllerDelegate(); 
    
  2. DidComplete을 구현하고, 여기 CNContactViewController가 들어있는 navigationController을 기각 :

    public class MyCNConatactViewControllerDelegate : CNContactViewControllerDelegate 
    { 
    
        public override void DidComplete(CNContactViewController viewController, CNContact contact) 
        { 
         viewController.NavigationController.DismissViewController(true, null); 
        } 
    
    }