UINavigationController导航控制器(一)

本文深入解析UINavigationController导航控制器的使用原理及常见属性,介绍如何通过push方法管理子控制器栈,展示导航条内容定制方法,包括标题、按钮及搜索控制器的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导航控制器

  • UINavigationController 导航控制器,用来管理子控制器
  • 其包含:UINavigationBar 导航条
  • 管理原则:push进如导航控制器,为栈顶控制器,栈顶控制器的View会被加到导航控制器中用来管理存储View的地方
UINavigationController
常见属性
///自控制器
@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;
// The current view controller stack.
@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;

在Appdeleagte初始化

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //设置窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    //
    UIViewController *VC = [[CCRootVC alloc] init];
    //设置单行控制器
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:VC];
    //设置窗口的根视图控制器
    self.window.rootViewController = nav;
    //窗口k可见
    [self.window makeKeyAndVisible];
    
    
    
    return YES;
}

CCRootVC
- (IBAction)handlePushNextVAction:(UIButton *)sender {
    CCTWOVC *twoVC = [[CCTWOVC alloc] init];
    [self.navigationController pushViewController:twoVC animated:YES];
}

在这里插入图片描述

管理原则

指定导控制器的的根视图控制器rootVC,此时导航指控内部调用的是push方法,把rootVC压入站顶控制器,rootVCView被存放到导航控制器管理的View上,此时可以看到rootVC粉色View显示在窗口上,当再次push进入twoVC的时候,此时的栈顶控制器是twoVC,导航控制器会移除rootVC的View,加入twoVC的view到导航控制器管理的View上,此时twoVC的View可以正常显示在窗口上

其原则是:先进后出

导航条内容

导航条的内容是有栈顶控制器的模型属性决定UINavigationItem

  self.navigationItem.title = @"标题";
   //设置标题视图
  self.navigationItem.titleView = [UIView new];
  //设置导航条上的 搜索
   self.navigationItem.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];

在这里插入图片描述

  • 设置左边的按钮
  //设置导航条左边的按钮
   self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"cc"] style:UIBarButtonItemStylePlain target:self action:@selector(handleAction)];
   //实现handleAction方法,也可以穿参数

  • 左边按钮自定义一个View
 UIButton *add = [UIButton buttonWithType:UIButtonTypeContactAdd];
 //自定义一个左边的按钮View
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:add];
  • 左边按钮的数组形式
//存放多个按钮
self.navigationItem.leftBarButtonItems = @[];

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值