2013-03-31 8 views
6

Ich habe eine Tab-Bar-Controller-App, die ich für iOS 6 und iOS 5 kompatibel machen möchte. Für iOS 6 verwende ich Auto-Layout. Aber wenn ich versuche, unter iOS 5 zu laufen, bekomme ich einen Fehler, weil NSLayoutConstraints nicht erkannt werden.Wie werden mehrere Storyboard-Dateien je nach iOS-Version geladen? (5 und 6)

Soweit ich das beurteilen kann, muss ein anderes Storyboard verwendet werden, ohne dass das automatische Layout aktiviert ist. Ich habe mein Storyboard in ein neues Storyboard kopiert, weiß aber nicht, wie ich festlegen soll, welches Storyboard im App-Delegaten verwendet werden soll.

Was ist der Code dafür?

+1

es ist wert? Die Pflege von 2 verschiedenen Storyboards kann sehr schmerzhaft sein. Kannst du nicht einfach iOS 5 oder Auto-Layout fallen lassen? –

+0

Das Deaktivieren des automatischen Layouts führte immer wieder zu Problemen bei falsch ausgerichteten Ansichten. Aber es endete damit für beide Versionen, da ich sowieso mit einem zweiten Storyboard arbeiten müsste. – JimmyJammed

Antwort

10

In AppDelegate, sollten Sie Code wie folgt finden:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil]; 
self.window.rootViewController = [storyboard instantiateInitialViewController]; 
[self.window makeKeyAndVisible]; 

Hier können Sie einen Code hinzufügen können unter den verschiedenen Storyboards, die Sie depending on the version of iOS zur Auswahl:

UIStoryboard *storyboard; 
NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; 
if (...) { 
    storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard-v5" bundle:nil]; 
} else { 
    storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard-v6" bundle:nil]; 
} 
self.window.rootViewController = [storyboard instantiateInitialViewController]; 
[self.window makeKeyAndVisible]; 
+2

Werke. Aber es endete damit, dass man ein Storyboard verwendete und das automatische Layout deaktivierte und sich mit der Neueinstellung von Streben und Federn beschäftigte. Die Antwort ist jedoch richtig für die Frage. Vielen Dank! – JimmyJammed