UIViewController bei Universal-App

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

  • UIViewController bei Universal-App

    Hallo liebe Gemeinde,

    ich bin neu in diesem Forum, habe aber schon viele Threads hier gelesen und finde das Forum sehr hilfreich :)

    Nun zu meinem Problem:
    Ich habe die letzten Wochen eine App geschrieben nur für das iPad, da hat auch alles ohne Probleme funktioniert, mehrere Views und Controller, alles hat bestens funktioniert.

    Nun stehe ich aber vor einem Problem, welches ich seit 2 Tagen nicht gelöst bekomme.

    Ich möchte diese App in eine Universal - App ändern.

    Nun wollte ich erstmal einen einfachen Test machen, also habe ich einfach mal ein Window bases Application erstellt als Universal.
    Meine Überlegung war nun, dass ich für iPhone und iPad 2 unterschiedliche Views und dazu auch 2 unterschiedliche ViewController habe.
    Deshalb habe ich dann für jedes Gerät einen ViewController inkl. Xib erstellt, und habe dann, wie es bei View Bases ist, die VIewController der MainWIndow auf die neuen Xib Files gelegt.
    Das hat auch funktioniert, also ich kann die App im iPhone und iPad Simulator starten, und es wird das angezeigt was angezeigt werden soll.
    So wenn ich nun aber z.b. mal ein Label und einen Button in den ViewController_iPad einfüge, und dann in diese Klasse die Outlets und Actions mache, kommt nun immer ein Fehler (sowohl bei iPhone als auch bei iPad).
    Entweder stürzt das Programm sofort nach dem Starten ab, oder ich kann auf den Button drücken, und erst dann stürzt es ab..
    Aus der Fehlermeldung konnte ich leider auch nichts sinnvolles erkennen.

    Nun meine Frage an euch, ist denn diese Denkweise überhaupt richtig? Oder stehe ich komplett au der falschen Spur?
    Und wenn sie richtig ist, wo liegt mein Fehler, bzw wo könnte er liegen?

    Nochmal als Hinweis, falls es unverständlich war:
    Ich möchte für iPhone und iPad 2 unterschiedliche Views und dazugehörige ViewController haben, sodass ich diese unabhängig voneinander Bearbeiten kann etc.

    Über eine Antwort würde ich mich sehr freuen.

    mfG

    Astri-Gsx
  • Hallo,

    Danke erstmal für die Antwort.

    Die Fehlermeldung kann ich leider erst am Sonntag Posten, da ich zur Zeit nicht da bin.

    Aber ich würde gerne mal wissen, ob das denn so, wie ich es gerne machen wollte, überhaupt möglich ist?

    Oder sollte man das anders machen?
    Vielleicht könnte mir ja sogar jemand sagen, wie man das mit der Universal-App und 2 Views grundsätzlich macht?

    Über eine Antwort würde ich mich sehr freuen.

    Mfg
  • Ok danke für die Antwort.

    Aber warum genau darf ich denn nur ein viewcontroller für beide Views haben?
    Denn wenn ich 2 haben könnte, dann könnte man ja den Code besser trennen, vorallem bei Apps, wo iPhone und iPad app etwas unterschiedlich ist..
    Habe gerade wieder ein englisches Tutorial gelesen, wo wieder meine Variante beschrieben wird (2 Viewcintroller, 2 Mainwindow, 2 Viewcontroller Xib), aber das funktioniert ja leider nicht.. :(

    Ok Also muss ich es dann mit einem Controller versuchen, aber könnte mir vielleicht nochmal jemand auf die Sprünge helfen, und erklären, warum es überhaupt ein Mainwindow und ein Viewcontroller Xib gibt, man kann ja in beide Elemente ziehen und damit arbeiten.. Also warum wird überhaupt immer der Umweg mit der Mainwindow gemacht?
    Vielleicht versteh ich es dann besser, wenn mir das jemand erklären könnte.

    Über eine Antwort würde ich mich sehr freuen.

    Mfg
  • Du darfst schon zwei View Controller haben und i.d.R. funktioniert das auch.
    Es empfiehlt sich (so meine Erfahrung, wenn man eine vorhandene App Universal machen möchte) als Vorlage die Window-based Application zu nehmen und dann entweder den View Controller aus MainWindow.xib zu entfernen oder einen zweiten zu deklarieren. Z.B.:

    Quellcode

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    2. UIViewController *controller = nil;
    3. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    4. controller = [[PhoneController alloc] initWithNibName:@"PhoneView" bundle:nil];
    5. } else {
    6. controller = [[PadController alloc] initWithNibName:@"PadView" bundle:nil];
    7. }
    8. [self.window setRootViewController:controller];
    9. [self.window makeKeyAndVisible];
    10. return YES;
    11. }
    Alles anzeigen