【发布时间】:2011-04-27 21:40:37
【问题描述】:
我正在尝试使用这种架构开发应用(游戏):
- 主视图是一个基于隐藏导航栏的导航控制器
- 在主视图中我需要灯光信息 按钮显示选项/学分 翻转视图
- 这个翻转视图必须有另一个 带有右栏的导航控制器 按钮到“完成”系统按钮
问题是翻转视图没有显示完成按钮,它似乎显示了主导航控制器......
这是代码。
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];
}
翻转视图。在 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];
}
结果是:
- 没有导航显示的主视图 酒吧
- 点击信息按钮
- Flipsideview 显示动画 和标题为“信息”而不是“pippo”的导航栏 而不是右侧的“完成”按钮...
我哪里错了??
【问题讨论】:
-
好的,我解决了将创建和分配“完成”按钮移动到 FlipSide 的 viewDidLoad 的问题,并在那里使用 self.navigationItem.XXX 和 self.navigationBar.XXX 而不是 self.navController.XXX。
标签: ios uinavigationcontroller uinavigationitem flipside