zoukankan      html  css  js  c++  java
  • iOS边练边学--UINavigationController导航条的使用

    一、使用UINavigationController的步骤以及代码

     1 // 程序加载完成后执行的代码
     2 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     3     // 1.初始化窗体
     4     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     5     
     6     // 2.导航控制器的根控制器
     7     UIViewController *vc = [[ViewController alloc] init];
     8     vc.view.backgroundColor = [UIColor lightGrayColor];
     9     // 3.窗体的根控制器为导航控制器
    10     UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    11     
    12     // 4.设置窗体根控制器
    13     self.window.rootViewController = nav;
    14     
    15     // 5.显示窗体
    16     [self.window makeKeyAndVisible];
    17     return YES;
    18 }
    二、UINavigationController的子控制器
      <1>UINavigationController以栈的形式保存子控制器(先进后出,看成数组就成)

      @property(nonatomic,copy) NSArray *viewControllers;

      @property(nonatomic,readonly) NSArray *childViewControllers;

      <2>使用push方法能将某个控制器压入栈

      - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

      <3>使用pop方法可以移除控制器

      将栈顶的控制器移除

      - (UIViewController *)popViewControllerAnimated:(BOOL)animated;

      <4>回到指定的子控制器

      - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

      <5>回到根控制器(栈底控制器)

      - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

    三、如何修改导航栏的内容

      <注意!!!!>导航栏的内容由栈顶控制器的navigationItem属性决定
      UINavigationItem有以下属性影响着导航栏的内容
      <1>左上角的返回按钮

      @property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

      <2>中间的标题视图

      @property(nonatomic,retain) UIView *titleView;

      <3>中间的标题文字

      @property(nonatomic,copy)NSString *title;

      <4>左上角的视图

      @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

      <5>UIBarButtonItem *rightBarButtonItem  右上角的视图

      @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

      <6>代码实现:

     1 - (void)viewDidLoad {
     2     [super viewDidLoad];
     3     // 这段代码是错误的!--导航栏的内容由栈顶控制器的navigationItem属性决定,并不是有导航栏本身决定!
     4 //    self.navigationController.navigationItem.title = @"第一个导航";
     5     self.navigationItem.title = @"第一个导航";
     6     // 下面这一句跟上面的代码是同一个意思,简化写法
     7 //    self.title = @"这个管那里????";
     8     // 可以设置UIView
     9     self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
    10     // 左右两边的按钮系统默认渲染成蓝色的,并且位置改动不了
    11     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"没用" style:UIBarButtonItemStyleDone target:nil action:nil];
    12     // 右边按钮不受系统渲染的方法一:initWithCustomView
    13     UIButton *btn = [[UIButton alloc] init];
    14     [btn setImage:[UIImage imageNamed:@"navigationbar_friendsearch"] forState:UIControlStateNormal];
    15     [btn setImage:[UIImage imageNamed:@"navigationbar_friendsearch_highlighted"] forState:UIControlStateHighlighted];
    16     [btn sizeToFit];
    17     
    18     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
    19 }

  • 相关阅读:
    为什么需要防火墙?
    比较流行的前端框架
    java基础面试题
    单列模式
    简单而且好用的随机验证码
    java中的九大隐藏变量.
    搭建Disuz论坛社区
    BZOJ 1006 [HNOI2008]神奇的国度
    COJ 0252 HDNOIP201304阻断传染
    BZOJ 1005 [HNOI2008]明明的烦恼
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5319392.html
Copyright © 2011-2022 走看看