条件に基づいてビュー コントローラーをロードする画面を開発していました。つまり、条件に関しては、アプリケーションの起動時にアプリ デリゲートから特定のビュー コントローラー クラスをロードする必要があります。
if(condition success)
{
//Load viewcontroller1
} else
{
//Load viewcontroller2
}
どうすればこれを達成できますか.助けてください..
条件に基づいてビュー コントローラーをロードする画面を開発していました。つまり、条件に関しては、アプリケーションの起動時にアプリ デリゲートから特定のビュー コントローラー クラスをロードする必要があります。
if(condition success)
{
//Load viewcontroller1
} else
{
//Load viewcontroller2
}
どうすればこれを達成できますか.助けてください..
Xcode を開いて新しいプロジェクトを作成し、ユニバーサル(iPad/iPhone) にすると、この例が表示されます。2 つの .xib ファイルが作成されます。1 つは iPad 用、もう 1 つは 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
両方の .xibs に同じクラス (ViewController.h と .m) を使用します。ただし、それを変更することもできます。Xcode グラフィカル デザイナー (以前は Interface Builder) で各 .xib に移動し、.xib を選択し、[ファイルの所有者] を選択し、[インスペクター] タブ (プロパティ ... 通常は右側にあります) でカスタム クラスを選択できます。コンボボックス。
したがって、それぞれUIViewController
に異なる Objective-C サブクラスが必要な場合は、それを行うことができます。上記のコードも一致するように変更することを忘れないでください ( [ViewController alloc]
)。
同じことが Apple によって行われていることがわかります。ユニバーサル アプリケーションを作成します。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];
}
条件に基づいて、さまざまなView Controllerをロードします。