[英]How to add ViewController to existing NavigationController from AppDelegate?
[英]Push more than 3 ViewController in NavigationController from AppDelegate App crash
我正在研究推送通知。 現在,當應用程序升至設備並點擊時。 我想將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);
}
上面的代碼可以很好地打開Specific ViewController。
但是My App在崩潰日志之后崩潰了。
崩潰報告:
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.
我的解決方案:
當我在google上搜索時,有人說每個ViewController的ViewDidAppear
方法一個接一個地打開ViewController,但是我不確定這是否正確。
任何幫助將不勝感激。
您不能通過動畫推送多個視圖控制器。 如果希望用戶看到轉換A-> B-> C,則確實必須在A和B的viewDidAppear方法中進行。
如果希望用戶僅看到最后一個視圖控制器C並能夠返回A和B,則可以一次將它們全部推入,但是您需要在沒有動畫的情況下進行操作:
nav.PushViewController(webController2, false);
另一個選擇是使用SetViewControllers像這樣:
nav.SetViewControllers([A, B, C], true);
這將同時推入所有3個視圖控制器,並且只有最頂層的一個將使用推入過渡進行動畫處理。 我認為這不適合您的情況,只是為了完整起見在此處添加它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.