2015-07-02 4 views
6

У меня есть приложение, в котором есть 4 раскадровки, каждый для другого устройства (iphone4, 5, 6, 6+). Я пытался использовать автоматические ограничения, но поскольку мое приложение сложно, я не смог понять это. Я слышал, что если у вас несколько раскадровки, должен быть способ указать, какую раскадровку использовать в делегате приложения. Как я могу указать правильную раскадровку для правильного устройства в делегате приложения? Я в настоящее время есть четыре раскадровки, названные:Несколько раскадровки в Swift

iphone4s.storyboard
iphone5.storyboard
iphone6.storyboard
iphone6plus.storyboard

Спасибо.

+0

Почему вы используете 4 раскадровки, в одной раскадровке ручка всех устройств bro, PLZ оптимизировать работу. –

ответ

1

Реализовать функцию, которая извлекает раскадровку при указании имени.

func getStoryBoard(name : String)-> UIStoryboard 
{ 
    var storyBoard = UIStoryboard(name: name, bundle: nil); 
    return storyBoard; 
} 

Изменить приложение метод делегата, как:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    var storyBoard = getStoryBoard("Main") // Change the storyboard name based on the device, you may need to write a condition here for that 
    var initialViewController: UIViewController = storyBoard.instantiateInitialViewController() as! UIViewController 
    self.window?.rootViewController = initialViewController 
    self.window?.makeKeyAndVisible() 
    // Override point for customization after application launch. 
    return true 
} 
+0

Несмотря на то, что этот ответ был похоронен внизу нити, он был единственным, кто работал. Извините, это заняло так много времени, чтобы выжить. –

3

По мне в эти дни мы используем autoLayout, который знает, как макет его вид на в зависимости от размера экрана и ограничений

Как вы спросили вы можете переопределить раскадровку из AppDelegate в методе applicationdidFinishLaunchingWithOptions

let storyBoard : UIStoryboard = UIStoryboard(name: "iphone4s", bundle: nil) 
    //you can check your device and override the storyboard name 
    let initialViewController: UIViewController = storyBoard.instantiateInitialViewController()! 
    self.window?.rootViewController? = initialViewController 
1

Для того, чтобы запустить различные раскадровки для различных устройств, необходимо переопределить RootViewController объект.

 
     var myDeviceStoryboard : UIStoryboard = UIStoryboard(name: "DeviceStoryboard", bundle: NSBundle.mainBundle())
var firstVC : MyDeviceFirstViewController = myDeviceStoryboard.instantiateViewControllerWithIdentifier("MyDeviceFirstViewController") as! MyDeviceFirstViewController
self.window?.rootViewController = MyDeviceFirstViewController //This should be a navigation controller

Кроме того, вам необходимо переопределить несколько настроек в настройках проекта и раскадровки. Обратитесь к прилагаемым изображениям. enter image description here

Смежные вопросы