【问题标题】:UINavigationController based app with FlipSideView with another UINavigationController基于 UINavigationController 的应用程序,带有 FlipSideView 和另一个 UINavigationController
【发布时间】: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


【解决方案1】:

你不是在 FlipsideViewController 上得到两个带有 navigationItems 的 navigationBar 吗?我现在正在与这个错误作斗争。

【讨论】:

  • Weel,好像没有。唯一奇怪的行为是第一个导航栏在翻转和主视图之间的转换过程中是可见的......即使我在 viewWillAppear 和 viewDidDisappear 中将 navigationBarHidden 设置为 true。转换后,主导航栏不再可见,就像我想要的那样。
猜你喜欢
  • 1970-01-01
  • 2012-10-13
  • 2010-11-08
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
相关资源
最近更新 更多