Universal App: View Controller abhängig vom Gerät im App Delegate definieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Universal App: View Controller abhängig vom Gerät im App Delegate definieren

    Hi,

    Ich möchte meine iPhone App zu einer Universal App für iPhone und iPad machen, allerdings möchte ich in der iPad-Version einen SplitViewController benutzen. Da der in der iPhone-Version natürlich nicht vorhanden ist, muss ich irgendwie herausfinden, welches Gerät benutzt wird. In meinem OpenGL-Spiel habe ich das durch dieses von Apple vorgeschlagene Makro gelöst (irgendwas mit interface_idiom oder so, müsste nachschauen wie das genau es heißt), allerdings funktioniert das nur für SDK-Versionen 3.2+.
    Außerdem muss ich im AppDelegate-Header ja die Referenz UINavigationController *viewController (in der iPhone Version) zu UISplitViewController (in der iPad Version) ändern, damit ich in der MainWindow-ipad.xib NIB Datei die entsprechenden Outlets setzen kann. Meine Frage ist also, wie ich im AppDelegate abhängig von der Geräteart verschiedene properties für den Haupt-ViewController definiere.
    Momentan habe ich folgenden Code in der AppDelegate Klasse:

    Header:

    Quellcode

    1. @interface CardAppDelegate : NSObject <UIApplicationDelegate> {
    2. UIWindow *window;// viewController soll fürs iPhone UINavigationController und fürs iPad UISplitViewController sein. Außerdem benötige ich fürs iPad noch verschiedene andere Outlets. So allgemein als UIViewController definiert kann ich nicht ordentlich auf Subklassen-Methoden und properties zugreifen.
    3. UIViewController *viewController;
    4. }
    5. @property (nonatomic, retain) IBOutlet UIWindow *window;
    6. @property (nonatomic, retain) IBOutlet UIViewController *viewController;
    7. @end
    Alles anzeigen



    Main:

    Quellcode

    1. @implementation CardAppDelegate
    2. @synthesize window, viewController;
    3. - (void)applicationDidFinishLaunching:(UIApplication *)application {
    4. [window addSubview:viewController.view];
    5. [window makeKeyAndVisible];
    6. }
    7. - (void)applicationWillTerminate:(UIApplication *)application {
    8. [(RootViewController *)[[(UINavigationController *)viewController viewControllers] objectAtIndex:0] saveDataData];
    9. }
    10. - (void)dealloc {
    11. [viewController release];
    12. [window release];
    13. [super dealloc];
    14. }
    Alles anzeigen



    Ich hoffe ich habe deutlich machen können, was ich meine ^
  • Lässt sich das Device nicht über

    Quellcode

    1. [UIDevice currentDevice].model
    ermitteln?

    Beim iPad sollte doch sicherlich "iPad" oder dergleichen zurückgegeben werden.

    Habe gerade gesehen, dass es seit 3.2 bei UIDevice auch das Property userInterfaceIdiom gibt, mit dem man zwischen iPhone (iPod) und iPad unterscheiden kann.