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

IOS ContactUI编辑后导航回应用程序,ios,xamarin.ios,Ios,Xamarin.ios,在我的Xamarin IOS应用程序中,我使用以下代码打开ContactUI: var contact = new AddressBookService().GetCNContactById(addressbookId); var view = CNContactViewController.FromNewContact(contact); view.Editing = true; // Display the view var window = UIApplication.SharedApp

在我的Xamarin 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
“编辑”对话框将正确显示。但单击“保存”后,我会进入“详细信息”视图:

正如您所看到的,第二个问题是,没有后退按钮。因此,返回我的应用程序的唯一方法是关闭该应用程序并重新启动。 在我保存联系人后,是否有办法直接导航回我的应用程序?或者将ContactUI包装在我当前的ViewController中,以便选项卡栏在下面仍然可见?

执行CNContactViewControllerDelegate,并使用CNContactViewController的DidComplete委托。单击“完成”按钮时,将触发“完成”

设置代理:

var view = CNContactViewController.FromNewContact(contact);
view.Delegate = new MyCNConatactViewControllerDelegate();
执行DidComplete,并在此处关闭包含CNContactViewController的NavigationController:

public class MyCNConatactViewControllerDelegate : CNContactViewControllerDelegate
{

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

}