1

最初の起動ビューを配置しようとしています。私はすでにいくつかのことを試しましたが、うまくいきません。

ここに私が持っているものがあります:

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

    UIPageControl *pageControl = [UIPageControl appearance];
    pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
    pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
    pageControl.backgroundColor = [UIColor whiteColor];

    return YES;

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"yourCondition"])
    {
        //launch your first time view
        self.viewController = [[viewController alloc] initWithNibName:@"viewController" bundle:nil];
    }
    else
    {
        //launch your default view
        self.viewController = [[viewController alloc] initWithNibName:@"defaultViewController" bundle:nil];

        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"yourCondition"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

}

どういうわけかそれは、viewController が AppDelegate のオブジェクト タイプとして見つからないということです。何か案は?

4

3 に答える 3

3

何もしなければ、ストーリーボードの最初のビュー コントローラーが表示されます。何か他のことをしたい場合、設定したいのは ですself.window.rootViewController。その場合、ウィンドウを手動で作成して表示する必要もあります。

于 2014-05-20T17:53:53.430 に答える
0

あなたの実装にはいくつか問題がありますが、application:didFinishLaunchingWithOptions:それは間違いなくあなたの問題の原因です。

iOS 開発を開始するためのいくつかのチュートリアルを読むことをお勧めします。これらは、将来本格的な開発を行う場合に把握する必要がある基本的な概念です。

そうは言っても、次のコードは正しく表示されるはずです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setWindow:[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];

    UIViewController *viewController = nil;

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"yourCondition"])
    {
        //launch your first time view
        viewController = [[viewController alloc] initWithNibName:@"viewController" bundle:nil];
    }
    else
    {
        //launch your default view
        viewController = [[viewController alloc] initWithNibName:@"defaultViewController" bundle:nil];

        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"yourCondition"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    [[self window] setRootViewController:viewController];

    [[self window] makeKeyAndVisible];

    return YES;
}

のデフォルトの実装でapplication:didFinishLaunchingWithOptions:は、ブール値を返すことが期待されます。これは、メソッド シグネチャによって示されます。

NSWindowまた、表示されるアプリケーションのメインを設定するメソッドの先頭にある重要な呼び出しも欠落しています。

@matt が指摘したように、あなたのコードは、への参照を保持する AppDelegate にプロパティがあることを期待していますviewController。コンパイルエラーについて言及したことから、この関係が設定されていないようです。rootViewController. _ NSWindow_

繰り返しになりますが、iOS 開発の初心者向けチュートリアルを読むか、まともな本を購入することをお勧めします。このような問題はかなり基本的なものだからです。これだけで問題が発生した場合は、より複雑なコードを掘り下げ始めると、混乱が増し、支援が必要になる可能性が高くなります.

于 2014-05-20T18:17:24.747 に答える