IOS ContactUI导航回到应用程序编辑

问题描述:

在我Xamarin iOS应用后,我打开ContactUI用下面的代码:IOS ContactUI导航回到应用程序编辑

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 

编辑对话框显示正确。但经过我点击Save我来详细查看:

enter image description here

正如你看到的是第二个问题,没有后​​退按钮。所以回到我的应用程序的唯一方法是杀死应用程序,然后重新开始。 在我保存联系人之后,是否可以直接导航回我的应用程序?或者在我的当前ViewController中包装ContactUI,以便TabBar在下面仍然可见?

执行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); 
        } 
    
    }