2

我在扩展(继承自)时发现了一些非常奇怪的行为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 代码重现)。

4

0 回答 0