Adding Navigation Bar programmatically iOS

前端 未结 5 2125
你的背包
你的背包 2020-11-29 03:48

I am trying to make an App with a Navigation Bar (Back button, title, etc) and a Tab Bar (Toolbar on the bottom). I am using subviews so I don\'t have to worry about the sta

相关标签:
5条回答
  • 2020-11-29 03:56

    Swift version, add this in viewDidLoad:

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

    And this in your View Controller class

    func doneButton(sender: UIBarButtonItem) {
        println(111)
    }
    
    0 讨论(0)
  • 2020-11-29 04:00

    xib method:

    tutorial from here

    - (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;
    }
    

    only code:

    howto-implement-uinavigationcontroller-uitabbarcontroller-programmatically

    - (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);
    }
    

    storyboard:

    storyboards-tutorial-in-ios-7

    enter image description here

    0 讨论(0)
  • 2020-11-29 04:04

    In Objective-C

    UINavigationBar* navigationbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, UIApplication.sharedApplication.statusBarFrame.size.height, self.view.frame.size.width, 50)];
    UINavigationItem* navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"];
    [navigationbar setItems:@[navigationItem]];
    [self.view addSubview:navigationbar];
    

    In Swift

    let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: UIApplication.shared.statusBarFrame.size.height, width: view.frame.size.width, height:44))
        let navigationItem = UINavigationItem()
        navigationItem.title = "Title"
        navigationBar.items = [navigationItem]
        self.view.addSubview(navigationBar)
    
    0 讨论(0)
  • 2020-11-29 04:09
    -(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
    }
    

    Swift

     // 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
     }
    
    0 讨论(0)
  • 2020-11-29 04:18

    Swift 5.

    The context: Here is a view controller that is presented to edit a user's bio information.

    import UIKit
    
    class EditBioController: UIViewController {
    
        // What you need are these two classes. One is a navigation bar,
        // and the other will hold the items that are in the navigation bar.
        private var navigationBar: UINavigationBar!
        private var customNavigationItem: UINavigationItem!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Create a navigation bar with the width of the view, and the standard height of 44.
            navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44))
            
            // Initialize the UINavigationItem class. The name is a bit confusing, because as you'll see -
            // we add multiple items to the one 'UINavigationItem.'
            customNavigationItem = UINavigationItem()
            customNavigationItem.title = "Edit Bio"
            
            let leftBarButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(selectorX))
            customNavigationItem.leftBarButtonItem = leftBarButton
            
            let rightBarButton = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(selectorX))
            customNavigationItem.rightBarButtonItem = rightBarButton
            
            // Add the items to the navigation bar.
            navigationBar.items = [customNavigationItem]
            // Add the navigation bar to the view.
            self.view.addSubview(navigationBar)
            
            
        }
        
        @objc func selectorX() {
            
        }
        
    }
    

    Here's what this produces:

    0 讨论(0)
提交回复
热议问题