ナビゲーション コントローラーを追加したくない場合はpresentViewController
、最初のビュー コントローラーから 2 番目のビュー コントローラーに移動しdismissViewControllerAnimated
て戻ることで、既存のビュー コントローラー間を移行できます。
NIB を使用していると仮定すると (それ以外の場合は、ストーリーボードに埋め込みコマンドを使用するだけです)、NIB にとどまるナビゲーション コントローラーを追加する場合は、それに応じてアプリ デリゲートを変更できます。
したがって、次のようなアプリ デリゲートがある可能性があります。
// AppDelegate.h
#import <UIKit/UIKit.h>
@class YourViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) YourViewController *viewController;
@end
これを変更して、ナビゲーション コントローラーを追加します (ここでメイン ビュー コントローラーへの以前の参照を取り除くことができます)。
// AppDelegate.h
#import <UIKit/UIKit.h>
//@class YourViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
//@property (strong, nonatomic) YourViewController *viewController;
@property (strong, nonatomic) UINavigationController *navigationController;
@end
そして、アプリ デリゲートの実装ファイルには、didFinishLaunchingWithOptions
おそらく次のような記述があります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
これを次のように変更できます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
//self.window.rootViewController = self.viewController;
YourViewController *viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
これで、ある NIB ビュー コントローラーから別の NIB ビュー コントローラーに移動してpushViewController
、 で戻ることができるようになりましたpopViewControllerAnimated
。viewDidLoad
コマンドを使用self.title = @"My Title";
して、ビューのナビゲーション バーに表示される内容を制御することもできます。また、NIB の「トップ バー」プロパティを変更して、シミュレートされたナビゲーション バーのメトリックを含めることもできます。これにより、画面をレイアウトして、画面がどのように見えるかを把握できます。
明らかに、ARC 以外のプロジェクトがある場合は、View Controller の alloc/init を含む行にも が必要autorelease
です (これは、アプリ デリゲートを見ると明らかです)。