1

現在、私は単一のストーリーボードで動作するアプリを持っています。作業アプリは、マスター/詳細ビュー レイアウトに基づいています。新しい絵コンテを追加することにし、それをメインの絵コンテに設定しました。[実行] をクリックすると、実行されて空白のページが表示されます。これは、View Controller を追加していないため、予想どおりです。

私はまだ Objective-C に慣れていないので、まだわからないことがたくさんあります。

新しく変更されたメイン ストーリーボード内に UIViewController を追加し (そしてそれを UIViewController のサブクラスに関連付け)、それを実行しようとすると、エラーが表示されます。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController viewControllers]: unrecognized selector sent to instance 0x7569a80'

私のAppDelegateの下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;

return YES;
}

上記のコードに何を追加する必要があるのか​​ よくわかりません。私も成功せずに以下の行を試しましたが、

UIViewController *viewController = (UIViewController *)self.window.rootViewController;

そのため、この問題を解決するにはどうすればよいですか?

4

2 に答える 2

5

からストーリーボード ファイルを取得New file-->ios-->user interface---> storyboard

@propertyappdelegate のようにストーリーボードを作成する

@property (nonatomic, retain) UIStoryboard* storyboard ;

.m ファイルに実装する前に、次のように記述します。

@interface AppDelegate ()
@property (strong, nonatomic) UIViewController *initialViewController;
@end

これは、最初のビューコントローラーを参照するためのものです。

次に@synthesize storyboardappdelegate.m で、次にナビゲーションのために書き込むことができますdidFinishLaunchingWithOptions

 //init storyboard
storyboard = nil;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
{

    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
       storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhoneIOS5" bundle:nil];

        NSLog(@"Version < 6");
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
      storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        NSLog(@"Version 6");
    }




    //NSLog(@"IOS 6");
}
else
{
    storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhoneIOS5" bundle:nil];
     //NSLog(@"IOS 5");
}
self.initialViewController = [storyboard instantiateInitialViewController];

//ルート ビュー コントローラーであるストーリーボード上の矢印が指すビュー コントローラーinstantiateInitialViewControllerを返すことを意味します。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = self.initialViewController;
[self.window makeKeyAndVisible];
于 2013-08-28T06:01:28.980 に答える
5

Xcode 7 では、info.plist に移動して、キー「メイン ストーリーボード ファイル ベース名」を新しい Storyboard の名前に設定できます。

例: ファイル -> 新規 -> ファイル -> ストーリーボード ファイルに移動して新しいストーリーボード ファイルを作成し、それを「MyAwesomeUI.storyboard」として保存し、info.plist で「メイン ストーリーボード ファイルのベース名」のキーを次のように変更します。 "MyAwesomeUI" .

乾杯!

于 2016-09-28T06:09:26.437 に答える