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我来详细查看:
正如你看到的是第二个问题,没有后退按钮。所以回到我的应用程序的唯一方法是杀死应用程序,然后重新开始。 在我保存联系人之后,是否可以直接导航回我的应用程序?或者在我的当前ViewController中包装ContactUI,以便TabBar
在下面仍然可见?
答
执行CNContactViewControllerDelegate
并使用CNContactViewController的代表DidComplete
。点击“完成”按钮后将触发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); } }