在 Xcode 5 中以编程方式修改 UINavigationcontroller
Posted
技术标签:
【中文标题】在 Xcode 5 中以编程方式修改 UINavigationcontroller【英文标题】:Modifying UINavigation controller programatically in Xcode5 【发布时间】:2014-01-16 12:37:17 【问题描述】:我有一个以编程方式生成的UINavigationController
应用于我的每个ViewControllers
,但这个UINavigationController
是空白的。我需要添加一些文本、一张图片(如果可能的话)和两个按钮。
我已经设法对一个非常基本的应用程序做了类似的事情,该应用程序只有一个 ViewController 和 UINavigationController
以正常方式创建,但不知道如何处理以编程方式生成的。
我在XCode5/ios7
中使用故事板。
这是生成UINavigationController
并启动第一个ViewController
的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
MainViewController* mainVC = [mainStoryboard instantiateInitialViewController];
UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:mainVC];
[self.window setRootViewController:navVC];
[_window makeKeyAndVisible];
return YES;
我尝试了一些我认为显而易见的事情,例如:
navVC.navigationBar.backgroundColor = [UIColor redColor];
改变颜色或:
[navVC setTitle:@"Test title"];
但没有任何改变,我可以改变标题的唯一方法是改变 mainVC 的标题
[mainVC setTitle:@"Test title"];
更改 MainViewController.m
文件中的标题本身没有任何作用。
那么我该如何修改UINavigationController
(navVC)?
谢谢,
【问题讨论】:
如果您使用故事板,为什么不将导航控制器放在故事板上,而不是将故事板的内容嵌套到以编程方式创建的导航控制器中呢?可能有一个很好的理由,但我无法想象一个...... 我需要 NavigationController 成为每个具有静态标题和按钮的 VC 顶部的栏,例如如果有意义的话,每个页面上的布局都完全相同,而不是 VC 之间的实际导航。我能想到的唯一方法是以编程方式生成 NC 并将相同的“实例”应用于每个 VC。卢卡现在似乎已经给出了答案。 【参考方案1】:您应该可以通过这种方式将图像设置到导航栏:
UINavigationBar *navBar = navVC.navigationBar;
UIImage *image = [UIImage imageNamed:@"YourNavBarImg.png"];
[navBar setBackgroundImage:image];
这可以改变导航栏的色调:
[navVC.navigationBar setTranslucent:NO];
[navVC.navigationBar setBarTintColor:[UIColor redColor]];
关于按钮(UIBarButtonItem)进入导航栏:
// where "self" is your current viewcontroller
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:button1,button2, nil];
【讨论】:
完美,这正是我需要的,我显然不是针对导航栏。谢谢。以上是关于在 Xcode 5 中以编程方式修改 UINavigationcontroller的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xcode 5 iOS 7 中以编程方式编辑 plist?
如何在 Swift 5 中以编程方式在特定屏幕(即主显示器而不是外部显示器)上显示窗口? [苹果系统; Xcode 15]
在 xcode/ios 中以编程方式编辑 RTF/DOC 文件
如何在视图控制器中以编程方式切换视图? (Xcode,iPhone)