2016-04-12 3 views
0

Возможно ли создать приложение, которое загружает свой первоначальный вид из раскадровки в рамках?Загрузка начального представления из фреймворка

Предположим, у меня есть каркас под названием MyCoolFramework. Эта структура имеет раскадровку под названием Home.storyboard, которая является исходным видом приложения.

Есть ли способ загрузить его в приложение при запуске? Мои AppDelegate выглядит следующим образом:

import UIKit 
import MyCoolFramework 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
     let bundle = NSBundle(identifier: "com.myprojects.MyCoolFramework") 
     let homeStoryboard = UIStoryboard(name: "Home", bundle: bundle) 

     let initialView = homeStoryboard.instantiateInitialViewController() 

     self.window?.rootViewController = initialView 
     self.window?.makeKeyAndVisible() 

     return true 
    } 
} 

кажется, что в данный момент в заявке приложение не имеет доступа к базе или его содержания. Кто-нибудь знает, как правильно это сделать? Это приложение-сопутствующее приложение для платформы, которую я разрабатываю.

Я есть удалил main storyboard директиву в info.plist

ответ

1

Я думаю, что его, вероятно, будет путь к вашей структуры не является правильным. Вы можете попробовать это (извините Objective-C Я уверен, что вы можете преобразовать в Swift)

[NSBundle bundleForClass: имя вашего класса в рамках]

Или, если это не сработает, добавьте метод для вашей структуры, который возвращает путь своего собственного пакета и код выше как реализацию этого метода.

NSBundle: mainBundle и NSBundle: bundleForClass будет возвращать разные пути при вызове изнутри фреймворка (хотя при вызове из библиотеки они будут одинаковыми). Поэтому экспериментируйте, пока не получите правильный путь для раскадровки.

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