如何在类中调用NavigationController,而不是从UIViewController派生?

时间:2015-04-13 19:30:38

标签: ios xamarin

我的服务类没有派生自 UIViewController ,但是我想调用 NavigationController 来移动到另一个控制器。

class AppoxeeService
{
    public void ShowInbox(){
        ..
        //this code doesn't work (of course), 
        //because class isn't derived from UIViewController
        NavigationController.PushViewController(new AppoxeeInboxController(), true)

        //this code is mostly possible,
        //but the NavigationController is null here
        UIApplication.SharedApplication.KeyWindow.RootViewController.NavigationController.PushViewController(new AppoxeeInboxController(), true)
    }
}

Xamarin文档仅适用于故事板,但我想动态查找当前的 RootViewController 并将其绑定到 NavigationController

在Xamarin的其他简单(又名" HelloWord")样本或其文档中,可以从 FinishLaunching 方法实例化:

        var window = new UIWindow (UIScreen.MainScreen.Bounds) {
            BackgroundColor = UIColor.White
        };

        rootViewController = new RootViewController ();
        navigationViewController = new UINavigationController (rootViewController);

        window.RootViewController = navigationViewController;
        window.MakeKeyAndVisible ();

我完全坚持 NavigationController 及其在代码中的用法。

1 个答案:

答案 0 :(得分:0)

您不需要编写复杂的代码。 只需调用您在AppDelegate类中声明的导航控制器实例

在AppDelegate.h中

@property(nonatomic,strong) UINavigationController *navigationController;

在AppDelegate.m

@synthesize navigationController

然后你的代码在didLaunch方法

你班上的

只需在任何地方调用实例

[(((AppDelegate *)[[UIApplication sharedApplication]委托])。navigationController pushViewController:yourViewController animated:YES];