C# Monotouch/Xamarin.iOS - 不支持推送导航控制器
Posted
技术标签:
【中文标题】C# Monotouch/Xamarin.iOS - 不支持推送导航控制器【英文标题】:C# Monotouch/Xamarin.iOS - Pushing A Navigation Controller Is Not Supported 【发布时间】: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 原因:不支持推送导航控制器。
有什么想法吗?
【问题讨论】:
【参考方案1】:问问自己,为什么要在 UINavigationController
上创建一个新的 UINavigationController
?
如果您的homeViewController
是UINavigationController
,那么只需执行以下操作:
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。以上是关于C# Monotouch/Xamarin.iOS - 不支持推送导航控制器的主要内容,如果未能解决你的问题,请参考以下文章
MonoTouch (Xamarin.iOS) Facebook 应用程序切换支持 iOS 5+