我正在推送推送通知。现在,当应用程序被提升到设备和当我点击它。我想将3个ViewController推送到导航堆栈。从AppDelegate在NavigationController中推送3个以上的ViewController应用程序崩溃
所以我使用下面的代码来做到这一点。
AppDelegate.cs代码
Window = new UIWindow(UIScreen.MainScreen.Bounds);
Menu = new SlideoutNavigationController();
var storyboard = UIStoryboard.FromName("Main", null);
var webController = storyboard.InstantiateViewController("DashBoardViewController") as DashBoardViewController;
Menu.MainViewController = new MainNavigationController(webController, Menu);
Menu.MenuViewController = new MenuNavigationController(new DummyControllerLeft(), Menu) { NavigationBarHidden = false };
Window.RootViewController = Menu;
Window.MakeKeyAndVisible();
var storyboarddd = UIStoryboard.FromName("Main", null);
var webControllerdd = storyboarddd.InstantiateViewController("DashBoardViewController") as DashBoardViewController;
webControllerdd.reloadNotication();
UINavigationController nav = webController.NavigationController;
var notifyWebController = storyboard.InstantiateViewController("NotificationListViewController") as NotificationListViewController;
notifyWebController.navigationContoller = nav;
nav.PushViewController(notifyWebController, true);
if (type.Equals("Damage Report"))
{
var webController2 = storyboard.InstantiateViewController("DamageReportViewController") as DamageReportViewController;
webController2.DamageReportId = id;
webController2.navigationContoller = nav;
nav.PushViewController(webController2, true);
}
if (type.Equals("Overloss"))
{
var webController2 = storyboard.InstantiateViewController("OverlossViewController") as OverlossViewController;
webController2.PacketId = id;
webController2.navigationContoller = nav;
nav.PushViewController(webController2, true);
}
上部代码工作正常打开特定的ViewController。
但我的应用程序崩溃之后崩溃日志。
崩溃报告:
2017-07-26 15:25:18.330 Aastha.iOS[6357:2021514] nested push animation can result in corrupted navigation bar
2017-07-26 15:25:18.740 Aastha.iOS[6357:2021514] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
我的解决方案:
,当我在谷歌搜索,所以有人说,打开视图控制器陆续从各个视图控制器ViewDidAppear
方法,但我不知道如果这是正确的方式。
任何帮助被赞赏。
尝试在某种延迟后推送所有控制器。它可能不会使应用程序崩溃。 – Nirmalsinh
发布了一个答案,但删除了它(没有注意到它是为xamarin)。话虽如此......'UINavigationController'包括一个方法来建立多个控制器作为孩子('func setViewControllers(_ viewControllers:[UIViewController],animated:Bool)')。我对xamarin一无所知,但也许这种方法桥接在那里(?) – Alladinian
刚刚检查了Xamarin的文档...方法[肯定存在](https://developer.xamarin.com/api/member/UIKit.UINavigationController .SetViewControllers/p/UIKit.UIViewController []/System.Boolean /)。所以你需要像'nav.SetViewControllers([controllers],true)' – Alladinian