IOS 从动态创建的导航栏显示不同的视图

Posted

技术标签:

【中文标题】IOS 从动态创建的导航栏显示不同的视图【英文标题】:IOS Display different views from dynamically created nav bar 【发布时间】:2011-05-03 10:22:31 【问题描述】:

我需要动态添加一个 UIViewController,其中包含一个带有多个按钮的导航栏。当按下其中一个按钮时,我需要将显示的视图换成另一个,同时保持导航栏。

CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; 

ViewControllerOne* viewOne = [[ViewControllerOne alloc] init];
[viewOne.view setFrame:appFrame];  

UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44.01)]; 
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];

UIBarButtonItem* bi = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(back:)];
[buttons addObject:bi];
[bi release];

bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];

bi = [[UIBarButtonItem alloc] initWithTitle:@"Two" style:UIBarButtonItemStyleBordered target:self action:@selector(showTwo:)];
[buttons addObject:bi];
[bi release];

[tools setItems:buttons animated:NO];
[buttons release];
viewOne.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];

m_navViewController = [[UINavigationController alloc] initWithRootViewController:viewOne];
[m_navViewController.view setFrame: appFrame ];
[self addSubview: m_navViewController.view];

现在当有人按下两个按钮时,我想删除 viewOne 并添加一个 ViewControllerTwo 对象

 - (void) showTwo:(id)sender
    ViewControllerTwo* viewTwo = [[ViewControllerOne alloc] init];
    [viewOne.view setFrame:[[UIScreen mainScreen] applicationFrame]]; 

    // remove viewOne from m_navViewController and add viewTwo

换句话说,我想通过按导航栏中的一项来显示不同的视图,但为所有视图保持相同的导航栏。

请注意,导航栏实际上包含五个按钮。出于解释的目的,我对其进行了简化。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用导航控制器模板;将按钮添加到 IB 中的导航栏(或在上面的代码中),然后当其中一个被点击时,您按下相应的视图控制器。

【讨论】:

只需使用此代码并将其作为 IBAction 连接到每个按钮:[self.navigationController pushViewController:someViewController animated:YES];

以上是关于IOS 从动态创建的导航栏显示不同的视图的主要内容,如果未能解决你的问题,请参考以下文章

Android SystemUI 导航栏动态显示隐藏

Android SystemUI 导航栏动态显示隐藏

Android SystemUI 导航栏动态显示隐藏

iOS帅气加载动画通知视图红包助手引导页导航栏朋友圈小游戏等效果源码

导航视图上的 Sencha Touch 2 动态按钮

实现动态内容的透明模糊导航栏