UINavigationController浅析

导航控制器是一个非常常用的控制器,它能够实现不同窗口的跳转关系,能够很好的描述控制器的层级关系.

从UIWindow创建控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  //     Override point for customization after application launch.
    //创建UIWindow
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    //创建控制器
    ViewController *vc = [[ViewController alloc] init];
    //设置控制器背景色
    vc.view.backgroundColor = [UIColor redColor];
   //创建导航控制器并设置vc为导航控制器的跟控制器
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    //设置导航控制器为UIWindow的跟控制器
    self.window.rootViewController = nav;
    //显示window
    [self.window makeKeyAndVisible];
    
    return YES;
}

从storyboard创建

1.将storyboard中的控制器删掉

2.找到UINavigationController,拖入storyboard中,如果不需要UITableView,可以将其删掉,换成需要的控制器,然后从UINavigationController拖线至所添加控制器,设置其为跟控制器即可.

UINavigationController常用属性

//标题栏文字
@property(nullable, nonatomic,copy)   NSString        *title; 
//标题栏图片
@property(nullable, nonatomic,strong) UIView          *titleView;      
//返回BarButtonItem
@property(nullable,nonatomic,strong) UIBarButtonItem *backBarButtonItem
//左边BarButtonItem
@property(nullable, nonatomic,strong) UIBarButtonItem *leftBarButtonItem;
//右边BarButtonItem
@property(nullable, nonatomic,strong) UIBarButtonItem *rightBarButtonItem;

    //设置导航栏标题
    self.title = @"打我啊魂淡!";
    //创建图片
    UIImage *image = [UIImage imageNamed:@"men"];
    //设置图片永不渲染
    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    //设置右边,action可以监听点击事件
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self action:nil];
    //设置左边,action可以监听点击事件
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];

效果图:

UINavigationController浅析_第1张图片
效果图

segue(发音:segui)

segue是控制器跳转的一个重要连接属性,在导航控制器中应用非常广泛.

segue有一个属性:identfier(标识),在使用storyboard时,可通过identfier快速找到你要跳转的控制器.segue有两个非常常用的方法:

//执行sugue的identfier为(NSString *)的连接,创建并加载指定控制器
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(nullable id)sender;
//准备执行Segue,从UIStoryboardSegue创建指定Segue连接
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender;
一般使用中,使用performSegueWithIdentifier:跳转到指定控制器.该方法会创建通过identfier创建指定类型的控制器,然后加载.
prepareForSegue:方法底层会将当前控制器设置为segue的sourceViewController,需要跳转的指定控制器为destinationViewController.在这个方法中可以用来与目标控制器传值.

你可能感兴趣的:(UINavigationController浅析)