iOS 5 App läuft nicht mehr auf iOS 6

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

  • iOS 5 App läuft nicht mehr auf iOS 6

    Guten Morgen zusammen,

    habe vor ein paar Monaten eine App auf iOS 5 implementiert. Diese läuft ohne jegliches Problem auf iOS 5.

    Nun hat mir eine Kollege geschrieben, dass er das App auf iOS 6 nicht zum Laufen bekommt.

    Nun habe ich mir Xcode neu installiert und das App geöffnet. Hab das Developement Target auf iOS 6 gestellt und im iPad 6.0 Simulator gestartet.

    Dabei kommt direkt beim Start dieser Fehler:

    *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View <UIView: 0x7487610; frame = (20 0; 748 1024); autoresize = W+H; layer = <CALayer: 0x7487670>> is associated with <FirstView: 0x7489cf0>. Clear this association before associating this view with <FirstView: 0x7471f10>.'


    Im Appdalegate erstelle ich einen FirstView und füge diesem einer Tabbar hinzu:

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self.window makeKeyAndVisible];

    FirstView *addView = [[FirstView alloc] initWithNibName:@"FirstView" bundle:nil];

    self.tabBarController = [[UITabBarController alloc] init];

    self.tabBarController.viewControllers = [NSArray arrayWithObjects:addView, nil];


    self.window.rootViewController = self.tabBarController;


    Die initWithNibName:bundle: sieht folgendermaßen aus:

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

    if(self.title == nil) self.title = @"Welcome";

    self.tabBarItem.image = [UIImage imageNamed:@""];

    [self registerDefaults];

    }


    Habe die Zeile: self = [super init...] auch schon auskommentiert und es kommt der gleiche Fehler.


    Kann sich jemand erklären wieso dieser Fehler in iOS 6 passiert?


    Vielen Dank und viele Grüße
    Chris
  • Hi,

    also im IB habe ich ja meine FirstView.xib welcher ich als class FirstView angegeben habe. Wo könnte ich im IB einen Firstview erstellen?

    Wenn ich das bei Class entferne, läuft die App auf iOS 5.1.1 noch aber auf iPad 6.0 Sim kommt der gleiche Fehler

    Vielen Dank schonmal!

    @Nussratte: Es ist nur Anfangs ein Tab, der Nutzer fügt die Tabs manuell hinzu
  • Also am Anfang habe ich ja das addView-Array welches ich dem tabBarController hinzufüge. (Siehe Code)

    Also startet das App mit einem Tab und sollte ja zumindest mal starten.

    Später gehe ich dann auch wieder über den tabBarController und ersetzte das viewControllers-Array durch ein neues und habe dadurch die neuen ViewController in der Tabbar. Aber der Fehler geschieht ja noch zu einem Zeitpunkt, an dem es noch gar keine anderen VCs gibt.

    Danke
  • Hi,

    hab deinen Edit zu spät gesehen :)

    Aber der StackOverFlow thread hat mein Problem gelöst. Man muss den ViewController aus der Xib löschen, dann läufts wieder. Is das ein komischer Fehler, verstehe nicht wieso dieser passiert. Naja mal sehen ob das auf die App irgend einen Einfluss haben wird ;)

    Viele Grüße und super vielen Dank Matz!

    Klist
  • Ist doch genau das was ich gesagt habe. Und komisch ist der überhaupt nicht sondern vollkommen logisch. Wenn du einen Viewcontroller in den XIB ziehst erstellst du damit eine Intsanz eines Viewcontrollers. Wenn Du den jetzt als Klasse FirstView definierst erstellt deine App beim Laden der XIB eine Instanz von FirstView. Da Du programmatisch selber auch noch mal eine erzeugst gibt es halt zwei davon und das ist Schrott

    Sei nicht böse, aber Du solltest Dich ein wenig mit den Grundlagen beschäftigen und nicht einfach nach Try and Error programmieren. Dir scheint es ja total egal zu sein warum etwas nicht klappt. Hauptsache StackoVerflow oder wir können es richten. Mit der Einstellung wirst du nicht weit kommen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Hi Thallius

    erstmal danke für deine Hilfe. Und warum der Fehler passiert verstehe ich schon, die Lösung habe ich nur nicht entdeckt. Ich habe als ich das App programmiert habe wirklich nur sehr wenig Ahnung von Obj-C und Xcode gehabt. Natürlich ist das in der Zwischenzeit etwas besser geworden und auch die Grundlagen habe ich hoffentlich verstanden. Was ich unlogisch finde ist, dass es in iOS 5 keine Probleme (nicht mal ein Warning) macht und in iOS 6 gleich zum Absturz führt. Das meinte ich mit unlogisch.

    Dass ich einen ViewController in der Xib habe, dem ich eine Klasse zuweise, war damals so in einem Buch gestanden mit dem ich angefangen hatte zu entwickeln. Im Nachhinein habe ich dann im Code den ViewController ein zweites mal erstellt und nicht mehr daran gedacht das wieder rückgängig zu machen. UNd da auch Xcode nicht gemeckert hat, ist das komplett unter den Tisch gefallen.

    Bin dir sicher nicht böse, wenn du ehrlich bist. Ich bin nunmal kein Informatikstudent sondern habe mir das alles alleine bzw. mit eurer Hilfe hier beigebracht.

    Ich strenge mich aber an das Alles besser hinzukriegen.

    Vielen Dank

    Chris