私はPush Notificationの作業中です。アプリケーションがデバイスに上がり、それをタップしたとき。 3つのViewControllerをナビゲーションスタックにプッシュしたいNavigationControllerの3つ以上のViewControllerをAppDelegateから押し込むアプリケーションのクラッシュ
私はこれを行うために以下のコードを使用しています。
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.
マイソリューション:
私はGoogleで検索し、SO誰かが開き、それぞれのViewController ViewDidAppear
方法から別の後のViewController 1が、私はわからないと言っていますこれが正しい方法であれば。
ご了承ください。
何らかの遅延の後にすべてのコントローラを押してみます。アプリがクラッシュすることはありません。 – Nirmalsinh
回答を投稿しましたが、削除しました(xamarinに気付かなかった)。つまり、UINavigationControllerには複数のコントローラを子として設定するメソッドが含まれています( 'func setViewControllerers(_ viewControllers:[UIViewController]、animated:Bool)')。私はxamarinについて何も知らないが、おそらくそのメソッドもそこに橋渡しされているだろうか?( – Alladinian
)Xamarinのドキュメントをちょうだいチェックした。このメソッドは[確かに存在する](https://developer.xamarin.com/api/member/UIKit.UINavigationController .SetViewController/p/UIKit.UIViewController []/System.Boolean /)。したがって、nav.SetViewControllers([コントローラ]、true)のようなものが必要です。 – Alladinian