私はこのアーキテクチャでアプリ(ゲーム)を開発しようとしています:
- メインビューは、ナビゲーションバーを非表示にしたナビゲーションコントローラーです。
- メインビューでオプション/クレジットのフリップサイドビューを表示するためのライト情報ボタンが必要です
- このフリップサイドビューには、「完了」システムボタンへの右バーボタンを備えた別のナビゲーションコトローラーが必要です。
問題は、フリップサイドビューに完了ボタンが表示されず、メインナビゲーションコントローラーが表示されているように見えることです...
これがコードです。
AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
メインビュー(XIBからロード)。showInfoのみを抽出します。
-(IBAction) showInfo:(id)sender {
FlipSideViewController *controller = [[FlipSideViewController alloc] initWithNibName:@"FlipSideView" bundle:nil];
controller.delegate = self;
controller.title = @"Info";
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleDone
target:controller action:@selector(done:)];
navController.navigationItem.rightBarButtonItem = doneButton;
controller.navController = navController;
[self presentModalViewController:navController animated:YES];
[doneButton release];
[controller release];
[navController release];
}
- (void)flipsideViewControllerDidFinish:(FlipSideViewController *)controller {
[self dismissModalViewControllerAnimated:YES];
}
FlipSideView。XIBでは、UIViewControllerビューにリンクされたアウトレットを備えた空白のビューしかありません。
@protocol FlipsideViewControllerDelegate;
@interface FlipSideViewController : UIViewController {
id <FlipsideViewControllerDelegate> delegate;
UINavigationController *navController;
}
@property (nonatomic,assign) id <FlipsideViewControllerDelegate> delegate;
@property (nonatomic,retain) UINavigationController *navController;
-(IBAction)done;
@end
@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipSideViewController *)controller;
@end
}
実装ファイル...
- (void)viewDidLoad
{
[super viewDidLoad];
self.navController.navigationItem.title = @"Pippo";
}
#pragma mark - User Methods
- (IBAction)done {
[self.delegate flipsideViewControllerDidFinish:self];
}
結果は次のとおりです。
- ナビゲーションバーなしで表示されているメインビュー
- 情報ボタンをクリックします
- 右側の「pippo」ではなく「Done」ボタンではなく「Info」というタイトルのアニメーションとナビゲーションバーで表示されているFlipsideview...
どこが間違っているの?