【问题标题】:C# Monotouch/Xamarin.iOS - Pushing A Navigation Controller Is Not SupportedC# Monotouch/Xamarin.iOS - 不支持推送导航控制器
【发布时间】:2014-01-28 19:02:13
【问题描述】:

我有一个为 iOS7 编写的应用程序......

我的 AppDelegate 中有以下代码

[Register ("AppDelegate")]
        public partial class AppDelegate : UIApplicationDelegate
        {
            // class-level declarations
            UIWindow window;
            UINavigationController navigationController;
            HomeViewController_iPhone homeViewController;

        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            window = new UIWindow (UIScreen.MainScreen.Bounds);

            homeViewController = new HomeViewController_iPhone ();
            navigationController = new UINavigationController (homeViewController);
            window.RootViewController = navigationController;
            window.MakeKeyAndVisible ();

            return true;
        }
    }

在这条线上失败了

navigationController = new UINavigationController (homeViewController);

HomeViewController 是一个 UINavigationController 类...

我在构建代码时收到以下错误 MonoTouch.Foundation.MonoTouchException 已被抛出。 抛出 Objective-C 异常。名称 NSInvalidArgumentException 原因:不支持推送导航控制器。

有什么想法吗?

【问题讨论】:

    标签: c# uinavigationcontroller xamarin.ios xamarin pushviewcontroller


    【解决方案1】:

    问问自己,为什么要在 UINavigationController 上创建一个新的 UINavigationController

    如果您的homeViewControllerUINavigationController,那么只需执行以下操作:

    window.RootViewController = new HomeViewController_iPhone ();
    

    或者你的homeViewController 不应该是导航控制器?

    【讨论】:

    • 这是一个很好的观点,但是如果我实现你的建议,当我从我的 homeViewController(这是一个 UINavigationController)中调用 this.NavigationController.PushViewController() 时,它会告诉我 HomeViewController 的 navigationController 是空....
    • 我是否必须显式实例化 UINavigationController 视图的 navigationController ?
    • @Goober 如果您的homeViewController UINavigationController,您将调用this.PushViewController() 将某些内容推送到您的自己的 堆栈中。使用this.NavigationController.PushViewController(),您将尝试在homeViewController 的导航控制器上推送一些东西。而且由于您的控制器没有嵌入 UINavigationController,但实际上相同,您将得到NULL。
    猜你喜欢
    • 2013-07-19
    • 2012-06-04
    • 2013-03-09
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多