IOS ContactUI编辑后导航回应用程序
在我的Xamarin 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
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);
}
}