在iOS中动态初始化视图控制器

时间:2013-07-15 10:14:27

标签: iphone ios objective-c uiviewcontroller initialization

此问题涉及基于运行时选项动态初始化不同的视图控制器。基本上,当应用程序启动时,Web服务会向下发送一段XML / JSON以定义用户首选项等。

我们需要根据这些变量确定接下来向用户显示哪个视图控制器。所以我们有一个类会询问某些问题(打开/关闭哪些功能等),然后我们需要能够返回一个类或基于此初始化一个类。由于我不想在每个视图控制器中导入每个视图控制器头,因此如何使用某些方法初始化类,例如:

 [[self nextClassManager] getNextClass];

感谢

1 个答案:

答案 0 :(得分:0)

我根据控制器类名称使用类似于从服务器命令打开视图控制器的东西:

- (void)openViewController:(NSString *)theControllerClassName {
    Class theControllerClass = NSClassFromString(theControllerClassName);
    if (theControllerClass && [theControllerClass isSubclassOfClass:[UIViewController class]]) {
        UIViewController* controller = [[theControllerClass performSelector:@selector(alloc)] init];

        UINavigationController *nav = (UINavigationController *)self.tabBarController.selectedViewController;
        [nav pushViewController:controller animated:YES];
        [controller release];
    }
}