以编程方式添加导航栏iOS

我正在尝试使用导航栏(后退button,标题等)和选项卡栏(底部的工具栏)制作应用程序。 我使用子视图,所以我不必担心状态栏,导航栏,标签栏高度等,但我认为这是我的麻烦,因为我似乎无法弄清楚如何设置导航栏和制表符栏。

这是我的。 我究竟做错了什么?

AppDelegate.h

(default for single view app) 

AppDelegate.m

 (default for single view app) 

ViewController.h

 #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (strong, nonatomic) UIView *contentSubview; @end 

ViewController.m

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)loadView{} - (void)viewDidLoad { [super viewDidLoad]; UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor greenColor]; self.contentSubview = [[UIView alloc] init]; self.contentSubview.backgroundColor = [UIColor orangeColor]; [view addSubview:self.contentSubview]; self.view = view; } - (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; self.contentSubview.frame = CGRectMake( 0, self.topLayoutGuide.length, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)-self.topLayoutGuide.length-self.bottomLayoutGuide.length ); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 

 -(void)ViewDidLoad { UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)]; UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:@"karthik"]; // [navbar setBarTintColor:[UIColor lightGrayColor]]; UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)]; navItem.leftBarButtonItem = cancelBtn; UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)]; navItem.rightBarButtonItem = doneBtn; [navbar setItems:@[navItem]]; [self.view addSubview:navbar]; } -(void)onTapDone:(UIBarButtonItem*)item{ } -(void)onTapCancel:(UIBarButtonItem*)item{ } 

Swift3

 let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height:44)) // Offset by 20 pixels vertically to take the status bar into account navigationBar.backgroundColor = UIColor.white // Create a navigation item with a title let navigationItem = UINavigationItem() navigationItem.title = "Title" // Create left and right button for navigation item let leftButton = UIBarButtonItem(title: "Save", style: .plain, target: self, action: #selector(ViewController.btn_clicked(_:))) let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: nil) // Create two buttons for the navigation item navigationItem.leftBarButtonItem = leftButton navigationItem.rightBarButtonItem = rightButton // Assign the navigation item to the navigation bar navigationBar.items = [navigationItem] // Make the navigation bar a subview of the current view controller self.view.addSubview(navigationBar) func btn_clicked(_ sender: UIBarButtonItem) { // Do something } 

迅速

  // Create the navigation bar let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 44)) // Offset by 20 pixels vertically to take the status bar into account navigationBar.backgroundColor = UIColor.whiteColor() navigationBar.delegate = self; // Create a navigation item with a title let navigationItem = UINavigationItem() navigationItem.title = "Title" // Create left and right button for navigation item let leftButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.Plain, target: self, action: "btn_clicked:") let rightButton = UIBarButtonItem(title: "Right", style: UIBarButtonItemStyle.Plain, target: self, action: nil) // Create two buttons for the navigation item navigationItem.leftBarButtonItem = leftButton navigationItem.rightBarButtonItem = rightButton // Assign the navigation item to the navigation bar navigationBar.items = [navigationItem] // Make the navigation bar a subview of the current view controller self.view.addSubview(navigationBar) func btn_clicked(sender: UIBarButtonItem) { // Do something } 

xib方法:

来自这里的教程

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Create the PlainViewController (and give it a title) PlainViewController *plainView = [[PlainViewController alloc] initWithNibName:@"PlainViewController" bundle:nil]; [plainView setTitle:@"PlainView"]; // Create the NavRootView controller (and give it a title) NavRootView *navRoot = [[NavRootView alloc] initWithNibName:@"NavRootView" bundle:nil]; [navRoot setTitle:@"NavRoot"]; // Create our navigation controller using our NavRootView as it's root view UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:navRoot]; // Make an array containing our plain view controller and our navigation controller NSArray *viewArray = [NSArray arrayWithObjects:plainView, navController, nil]; // Release the views and nav controller [plainView release]; [navRoot release]; [navController release]; // Create our tab bar controller UITabBarController *tabbarController = [[UITabBarController alloc] init]; // Tell the tab bar controller to use our array of views [tabbarController setViewControllers:viewArray]; // Finally, add the tabbar controller as a subview of the app window [window addSubview:[tabbarController view]]; [self.window makeKeyAndVisible]; return YES; } 

只有代码:

HOWTO -实施- UINavigationController的-的UITabBarController -编程

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /* Initialize window view */ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; /* Initialize tab bar controller, add tabs controllers */ self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = [self initializeTabBarItems]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return (YES); } - (NSArray *)initializeTabBarItems { NSArray * retval; /* Initialize view controllers */ ViewController1 * viewController1 = [[ViewController1 alloc] init]; ViewController2 * viewController2 = [[ViewController2 alloc] init]; ViewController3 * viewController3 = [[ViewController3 alloc] init]; ViewController4 * viewController4 = [[ViewController4 alloc] init]; ViewController5 * viewController5 = [[ViewController5 alloc] init]; /* Initialize navigation controllers */ UINavigationController * navigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1]; UINavigationController * navigationController2 = [[UINavigationController alloc] initWithRootViewController:viewController2]; UINavigationController * navigationController3 = [[UINavigationController alloc] initWithRootViewController:viewController3]; UINavigationController * navigationController4 = [[UINavigationController alloc] initWithRootViewController:viewController4]; UINavigationController * navigationController5 = [[UINavigationController alloc] initWithRootViewController:viewController5]; /* Stuff Navigation Controllers into return value */ retval = [NSArray arrayWithObjects:viewController1,viewController2,viewController3,viewController4,viewController5,nil]; return (retval); } 

故事板:

故事板教程合IOS-7

在这里输入图像说明

Swift版本,将其添加到viewDidLoad中:

 var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneButton:") navigationItem.rightBarButtonItem = doneButton 

这在你的视图控制器类

 func doneButton(sender: UIBarButtonItem) { println(111) }