美文网首页
IOS开发 多界面传值

IOS开发 多界面传值

作者: 奔跑的小小鱼 | 来源:发表于2017-06-01 22:20 被阅读39次

    本节学习内容:

    1.多界面传值的基本概念

    2.多界面传值的方法

    3.多界面传值的应用

    【多界面传值 属性】

    changeColor:改变颜色协义函数

    delegate:代理对象设计

    assign:代理赋值类型


    1.创建三视图分别为VCFirst,VCSecond,VCThird,都继承于UIViewController

    【VCFIrst.m】

    #import"VCFirst.h"

    #import"VCSencend.h"

    @interface VCFirst()

    @end

    @implementation VCFirst

    -(void)viewDidLoad{

    [super viewDidLoad];

    }

    //点击时推出视图控制器二

    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    VCSecond* vc=[[VCSecond alloc]init];

    vc.view.backgroundColor=[UIColor orangeColor];

    //推出视图控制器二

    [self.navigationController pushViewController:vc animated:YES];

    }


    【VCSecond.h】

    //定义代理协义,视图控制器二的协义

    @protocol VCSecondDelegate<NSObject>

    //定义一个协义函数,改变背景颜色

    -(void) changColor:(UIColor*)color;

    @end

    @interface VCSecond:UIViewController

    @property(assign,nonatomic)NSInteger tag;

    //定义一个代理对象,代理对象会执行协议函数,通过代理对象实现协义函数,达到代理对象改变本身属性的目的,代理对象一定要实现代理协义

    @property(assign,nonatomic)id<VCSecondDelegate>delegate;

    @end


    【VCSecond.m】

    #import"VCSecond.h"

    @interface VCSecond()

    @end

    @implementation VCSecond

    -(void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor=[UIColor purpleColor];

    //必变颜色导般栏按钮

    UIBarButtonItem* btnChange=[UIBarButonItem alloc]initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(pressChange)];

    self.navigationItem.rightBarButtonItem=btnChange;

    }

    //点击按钮触发代理事件

    -(void) pressChange{

    //代理对象调用事件函数

    _delegate changeColor:[UIColor redColor]];]

    }


    【VCFirst.h】

    #import<UIKit/UIKit.h>

    #import"VCSecond.h"

    //继承 VCSecondDelegate代理

    @interface VCFirst:UIViewController<VCSecondDelegate>

    -(void)changeColor:(UIColor *)color;

    @end

    【VCFirst.m】

    #import"VCFirst.h"

    @inteface VCFirst()

    @end

    @implementation VCFirst

    -(void)viewdidLoad{

    [super viewdidLoad];

    }

    -(void)chanteColor:(UIColor *)color{

    self.view.backgroundColor=color;

    }

    //推出视图控制器二

    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    VCSecond* vc=[[VCSecond alloc]init];

    //将当前的控制器做为代理对象赋值

    vc.delegate=self;

    //推出视图控制器二

    [self.navigationController pushViewController:vc animated:YES];

    }


    【Delegate.m】

    #import"AppDelegate.h"

    #import"VCFirst.h"

    #import"VCThird.h"

    @interface AppDelegate()

    @end

    @implementation AppDelegate

    -(BOOL)application:(UIApplication *)application didFinshLaunchingWithOptions:(NSDictionary *)launchOptions{

    self.window=[[UIwindow alloc]initWithFrame:[UIScreen mainScreen]..bouns]

    [self.window makeKeyAndVisible];

    VCFirst* vcFirst=[[VCFirst alloc]init];

    vcFirst* vcFirst=[[VCFirst alloc]init];

    vcFirst.title=@"视图一";

    vcFirst.view.backgroundColor=[UIColor whiteColor];

    //加载到导航控制器

    UINavigationController* nav=[[UINavigationController alloc]initWithRootViewController:vcFirst];

    VCThird* vcThird=[[VCThird alloc]init];

    VCThird.title=@"视图三";

    vcThird.view.backgroundColor=[UIClolor greenColor];

    NSArray* array=[NSArray arrayWithObjects:nav,vcThird,nil];

    //分栏视图控制器

    UITablBarController* tabVC=[[UITabBarController alloc]init];

    tabVC.viewControllers=array;

    self.window.rootViewController=tabVC;

    return YES;

    }

    相关文章

      网友评论

          本文标题:IOS开发 多界面传值

          本文链接:https://www.haomeiwen.com/subject/rtijfxtx.html