在iOS 5上扩展UINavigationController但在iOS 6上工作时根控制器中的空白视图

时间:2013-02-20 23:48:22

标签: ios5 ios6 xamarin.ios

我在扩展(继承自)UINavigationController时发现了一些非常奇怪的行为。请考虑以下事项:

public class MyNavigationController : UINavigationController
{
    public MyNavigationController(UIViewController viewRootController) 
    : base(viewRootController)
    {
        AllNavigationControllers.Add(this);
    }
}
...
window.RootViewController = new MyNavigationController(new AnotherController());

这适用于iOS 6,但在iOS 5中显示空白视图,而不是显示AnotherController的主视图(从NIB加载)。从理论上讲,对base(viewRootController)的呼吁应该照顾到这一点;并且它没有继承,这是非常奇怪。

这是我的解决方法......

public class MyNavigationController : UINavigationController
{
    public MyNavigationController(UIViewController viewRootController) : base()
    {
        AllNavigationControllers.Add(this);
        this.ViewControllers = new UIViewController[]{viewRootController};
    }
}
...
window.RootViewController = new MyNavigationController(new AnotherController());

不漂亮,但现在适用于iOS 5和6

为什么对base(viewRootController)的调用在继承时无法正常工作,但在不进行调用时却无效?

(顺便说一下,我不确定这个问题是否特定于Monotouch(现在是Xamarin.iOS),或者是否可以使用等效的Objective-C代码重现)。

0 个答案:

没有答案