我正在开发一个屏幕,我想根据条件加载视图控制器。即关于条件,它应该在应用程序启动时从应用程序委托加载特定的视图控制器类。
if(condition success)
{
//Load viewcontroller1
} else
{
//Load viewcontroller2
}
我怎样才能做到这一点。请帮帮我..
我正在开发一个屏幕,我想根据条件加载视图控制器。即关于条件,它应该在应用程序启动时从应用程序委托加载特定的视图控制器类。
if(condition success)
{
//Load viewcontroller1
} else
{
//Load viewcontroller2
}
我怎样才能做到这一点。请帮帮我..
只需打开 Xcode,创建一个新项目,将其设为 Universal (iPad/iPhone),您就会看到一个示例。它为您创建两个 .xib 文件。一个用于 iPad,一个用于 iPhone。
然后,应用程序委托执行以下操作:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
在这种情况下,它对ViewController
两个 .xib 使用相同的类(ViewController.h 和 .m)。但是,您当然也可以改变这一点。只需进入 Xcode 图形设计器(以前是 Interface Builder)中的每个 .xib,选择 .xib,选择File 's Owner,然后在 Inspector 选项卡上(属性...通常在右侧),您可以从组合框。
所以,如果你需要一个不同的 Objective-CUIViewController
子类,你可以这样做。请记住将上面的代码也更改为匹配([ViewController alloc]
)。
你可以看到苹果也做了同样的事情。创建一个通用应用程序。在 appDelegate 你可以看到
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
} else {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
}
他们根据条件加载不同的视图控制器。