多界面?zhèn)髦?/h2>

1. 基本概念

頁面?zhèn)髦涤卸喾N方式,今天學(xué)的是通過屬性傳值和代理傳值。屬性傳值就是通過一個(gè)按鈕或者其他的控件加上觸發(fā)函數(shù)傳值。

2. 屬性傳值

刪去ViewController文件,在新建三個(gè)視圖控制器文件。在AppDelegare中創(chuàng)建window和視圖一和視圖三,還有一個(gè)工具欄一個(gè)導(dǎo)航欄:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #4f8187}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3d1d81}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa}span.s1 {font-variant-ligatures: no-common-ligatures; color: #78492a}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s5 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s6 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s7 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s8 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s9 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #d12f1b}

#import "AppDelegate.h"
#import "VCFirst.h"
#import "VCThird.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    [self.window makeKeyAndVisible];
    
    
    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=[UIColor greenColor];
    UINavigationController* nav2=[[UINavigationController alloc]initWithRootViewController:vcThird];
    NSArray* array=[NSArray arrayWithObjects:nav,nav2,nil];
    UITabBarController* tabVC=[[UITabBarController alloc]init];
    tabVC.viewControllers=array;
    
    self.window.rootViewController=tabVC;
    
    return YES;
}

然后在視圖一中創(chuàng)建視圖二:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3d1d81}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s5 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s6 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s7 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s8 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s9 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}span.s10 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s11 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #d12f1b}

@implementation VCFirst

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

-(void)changeColor:(UIColor *)color
{
    self.view.backgroundColor=color;
}

//創(chuàng)建視圖控制器二
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    VCSecond* vcSecond=[[VCSecond alloc]init];
    
    //將當(dāng)前的控制器作為代理對(duì)象賦值
    //delegate相當(dāng)于是vcSecond的屬性
    // vcSecond.delegate=self;
    
    vcSecond.title=@"視圖二";
    vcSecond.view.backgroundColor=[UIColor purpleColor];
    [self.navigationController pushViewController:vcSecond animated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

視圖結(jié)構(gòu)為:
----視圖一 ---->視圖二
----視圖三

這時(shí)在VCFirst中可以直接改變視圖二的顏色。

3. 代理傳值

這部分主要解決怎么通過改變視圖二中的代碼,可以控制改變視圖一的顏色。

在視圖二中添加一個(gè)按鈕:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3d1d81}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s3 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s4 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s5 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s6 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #d12f1b}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    UIBarButtonItem* btnChange=[[UIBarButtonItem alloc]initWithTitle:@"改變顏色" style:UIBarButtonItemStyleDone target:self action:@selector(pressChange)];
    
    self.navigationItem.rightBarButtonItem=btnChange;
}

然后在視圖二的頭文件里定義協(xié)議:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa}span.s1 {font-variant-ligatures: no-common-ligatures; color: #78492a}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s4 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s5 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s6 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s7 {font-variant-ligatures: no-common-ligatures; color: #4f8187}

#import <UIKit/UIKit.h>

//定義一個(gè)代理協(xié)議
//是視圖控制器二的協(xié)議
@protocol  VCSecondDelegate <NSObject>

//定義協(xié)議函數(shù)
-(void)changeColor:(UIColor*)color;
@end

@interface VCSecond : UIViewController
@property(assign,nonatomic)NSInteger tag;

//定義一個(gè)代理對(duì)象
//代理對(duì)象會(huì)執(zhí)行協(xié)議函數(shù)
//通過代理對(duì)象實(shí)現(xiàn)協(xié)議函數(shù),達(dá)到代理對(duì)象改變本身屬性的目的
//代理對(duì)象一定要實(shí)現(xiàn)代理協(xié)議
@property(assign,nonatomic)id<VCSecondDelegate> delegate;

@end

在視圖一創(chuàng)建視圖二的過程中將視圖一賦值為代理對(duì)象:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}

vcSecond.delegate=self;

完整代碼即

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3d1d81}span.s1 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s5 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s6 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s7 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s8 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s9 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}span.s10 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s11 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #d12f1b}

//創(chuàng)建視圖控制器二
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    VCSecond* vcSecond=[[VCSecond alloc]init];
    
    //將當(dāng)前的控制器作為代理對(duì)象賦值
    //delegate相當(dāng)于是vcSecond的屬性
    vcSecond.delegate=self;
    
    vcSecond.title=@"視圖二";
    vcSecond.view.backgroundColor=[UIColor purpleColor];
    [self.navigationController pushViewController:vcSecond animated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

最后去視圖二中實(shí)現(xiàn)按鈕觸發(fā)函數(shù):

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}span.s1 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s5 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s6 {font-variant-ligatures: no-common-ligatures; color: #31595d}span.s7 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s8 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}

//點(diǎn)擊按鈕時(shí)觸發(fā)事件
-(void)pressChange
{
    //代理對(duì)象調(diào)用事件函數(shù)
    [_delegate changeColor:[UIColor redColor]];
}

最終效果:

屏幕快照 2016-12-08 上午11.04.57.png
屏幕快照 2016-12-08 上午11.05.06.png
屏幕快照 2016-12-08 上午11.05.13.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容