14

この方法で、アプリデリゲート.mからUIStoryboardを読み込もうとしています。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    UIViewController *vc =[storybord instantiateInitialViewController];
    [self.window addSubview:vc.view];

    return YES;
}

このコードの問題は何ですか?何か案が?

4

4 に答える 4

33
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
   UIViewController *vc =[storyboard instantiateInitialViewController];

   // Set root view controller and make windows visible
   self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   self.window.rootViewController = vc;
   [self.window makeKeyAndVisible];

   return YES;
}

これを試して。ルートビューコントローラーの設定とウィンドウの表示が不足していると思います。

于 2012-09-23T16:02:57.587 に答える
4

Swift4.2以降の場合。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: Bundle.main)
    let viewController = storyboard.instantiateInitialViewController()
    window?.rootViewController = viewController
    window?.makeKeyAndVisible()
    return true
}
于 2018-08-16T09:30:40.223 に答える
2

あなたのコードから、UIWindowオブジェクトが初期化されていないことがわかります。

でストーリーボード名を指定しない場合は、初期化する必要がありますApp-Info.plist

また、ウィンドウキーとを表示します。以下に表示されているようにコードを変更してください。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    UIViewController *vc =[storybord instantiateInitialViewController];
    [self.window addSubview:vc.view];
    [self.window makeKeyAndVisible];
    return YES;
}
于 2013-01-26T04:06:06.757 に答える
-2

現在、このようには機能しません。

ビルド設定のplistには、メインストーリーボード(またはそのようなもの)のエントリが追加されています。applicationDidFinishLoadingに必要なのは、YESを返すことだけです。

ストーリーボードにチェックマークを付けて新しいプロジェクトを開始すると、正確なエントリを確認できます。

それがそこにあるときは、ストーリーボードファイルから取得するので初期ビューをロードする必要はありません(初期ビューフラグです)。

HTH

于 2012-09-23T15:35:40.620 に答える