• 学习IOS开发UI篇--UINavigationController/Segue


      UINavigationController的使用步骤
    1.初始化UINavigationController
    2.设置UIWindow的rootViewController为UINavigationController
    3.根据具体情况,通过push方法添加对应个数的子控制器
     
      UINavigationController的自控制器
      UINavigationController以栈的形式保存子控制器

    @property(nonatomic,copy) NSArray *viewControllers;

    @property(nonatomic,readonly) NSArray *childViewControllers;

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

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

    使用pop方法可以移除控制器
    将栈顶的控制器移除(销毁)

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

    - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;回到指定的子控制器

    - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;回到根控制器(栈底控制器)
      UINavigationController修改导航栏的内容
      UINavigationItem有以下属性影响着导航栏的内容
    @property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;   左上角的返回按钮
    @property(nonatomic,retain) UIView          *titleView;                        中间的标题视图
    @property(nonatomic,copy)   NSString        *title;             中间的标题文字
    @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;     左上角的视图
    @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;   右上角的视图
     
     
      Segue的属性:

    @property (nonatomic, readonly) NSString *identifier;        唯一标识    

    @property (nonatomic, readonly) id sourceViewController;      来源控制器

    @property (nonatomic, readonly) id destinationViewController;   目标控制器

    自动跳转(不需要进行判断操作的时候) 按住Control键点击按钮直接拖线到下一个控制器

    手动跳转(需要进行判断操作的时候)     按住Control键,从来源控制器拖线到目标控制器

      在恰当的时刻,使用perform方法执行对应的Segue

    [self performSegueWithIdentifier:@"login2contacts" sender:nil];    Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用

    调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; 在这个方法中可以取出目标控制器,对其进行数据操作(系统自动调用- (void)perform将目标控制器压入栈中)

      数据的顺传与逆传:

    顺传入上边进行的操作

    逆传需要设置代理,让之前的源控制作为之前目标控制器的代理,在之前的目标控制器中传入数据,通过代理调用协议方法,完成数据的传递

  • 相关阅读:
    解说asp.net core MVC 过滤器的执行顺序
    asp.net core 2.0 Microsoft.Extensions.Logging 文本文件日志扩展
    【技术累积】【点】【java】【30】代理模式
    【技术累积】【点】【java】【29】MapUtils
    【技术累积】【点】【java】【28】Map遍历
    【技术累积】【点】【java】【27】@JSONField
    【技术累积】【点】【java】【26】@Value默认值
    【技术累积】【点】【java】【25】Orderd
    【技术累积】【点】【java】【23】super以及重写重载
    【技术累积】【线】【java】【2】AOP
  • 原文地址:https://www.cnblogs.com/zhaoyan/p/3775517.html
Copyright © 2020-2023  润新知