2

ビュー ベースのアプリケーションを作成し、appdelegate .h ファイルで UINavigationcontroller オブジェクトを作成し、それをウィンドウ サブビューに追加しました。アプリの次は起動を完了しました。アプリが最初にナビゲーションバーを上部に起動したときに表示するクラスを割り当てて初期化しました。

これは、クラスをナビゲーションバーに追加するために行ったコードです

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Add the view controller's view to the window and display.
    [window addSubview:navController.view];
    //test is the class that i want to be viewed first when  the app launches first
    test *t = [[test alloc]initWithNibName:@"test" bundle:nil];
    [navController.view addSubview:t.view];
    [window makeKeyAndVisible];

    return YES;
}

問題は私のテストクラスが起動することですが、ナビゲーションバーが表示されません。何が問題なのですか?

4

4 に答える 4

1

独自のビュー コントローラーのビューをナビゲーション コントローラーのサブビューとして追加しないでください。このようにして、ナビゲーション コントローラーのビュー (ナビゲーション バーを含む) を非表示にすると、ビュー コントローラーがナビゲーション スタックの一部になりたいことがわからないため、ナビゲーション コントローラーが無意味になります。

代わりに、次を使用してナビゲーション コントローラーのスタックにプッシュします。

[navController pushViewController:myViewController animated:NO];
于 2011-04-28T05:14:05.240 に答える
1

このようなものを使用してください(これらの行を追加してください)

appDelegate.h

UINavigationController *navController

@property (nonatomic,retain) UINavigationController *navController;

と.mで

test *t = [[test alloc]initWithNibName:@"test" bundle:nil]; 
self.navController=[[[UINavigationController alloc] initWithRootViewController:t] autorelease];

[window addSubview:self.navController.view];
 [window makeKeyAndVisible];

それはあなたを助けます。

他のビューから、appDelegate クラスのオブジェクトを作成し、そのクラスのナビゲーション コントローラーにアクセスする必要があります。

これを見る

yourAppDelegateClass *objAppDelegate=(yourAppDelegateClass *)[[UIApplication sharedApplication] delegate];

ビューをプッシュするために

SecondView *s=[[[SecondView alloc] initWithNibName:@"yournibName" bundle:nil] autorelease];
[objAppDelegate.navController pushViewController:s animated:YES];

この概念はあなたを助けます。

于 2011-04-28T05:15:09.273 に答える
0

ナビゲーション コントローラーのビューをテスト ビューに設定しているため、ナビゲーション バーは表示されません。配列を必要とするナビゲーションコントローラーのビューコントローラーを次のように設定することでそれを行うことができます-

test *t = [[test alloc]initWithNibName:@"test" bundle:nil];
NSArray *viewControllers = [[NSArray alloc] initWithObjects:t,nil];
[self.navigationController setViewControllers:viewControllers];
于 2011-04-28T05:13:40.137 に答える
0

まず、navController を初期化する場所がわかりません。次に、viewController をナビゲーション コントローラー ビューに追加するのではなく、次のようにビュー コントローラーをスタックにプッシュします。

[navController pushViewController:t animated:NO];

お役に立てれば。

于 2011-04-28T05:14:07.997 に答える