代理设计模式---传值

1.基于MVC设计模式---实现低耦合,层与层之间实现独立,增强代码的复用性,充分实现M层和V层之间的独立

2.利用代理模式 实现从V层向C层传值---在C层拿到V层的数据,从而对数据本身做一些改变(操作),进而实现V层视图的改变

2.1协议实现

2.2委托实现

3.代理实现

@interface BCRootViewController ()<BCRootViewDelegate>

@property(nonatomic,retain)BCRootView *rootView;

@property(nonatomic,assign)UIView *optView;

@end

@implementation BCRootViewController
- (void)dealloc
{
    [_rootView release];
    [super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
-(void)loadView
{
    self.rootView = [[BCRootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.view = self.rootView;
    [_rootView release];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    /**
     *   设置根式图的代理 为自己
     */
    self.rootView.delegate = self;
    
    /**
     *
     */
    
    self.optView = self.rootView.redView;
}

#pragma mark ---segment的点击方法
- (void)BCRootViewSegementDidClicked:(UISegmentedControl *)send
{

if (send.selectedSegmentIndex == 0) {
        self.optView = self.rootView.redView;
    }else{
    
        self.optView = self.rootView.blueView;
    }
}
#pragma mark ---slider的点击方法
- (void)BCRootViewSliderDidClicked:(UISlider *)redSlider :(UISlider *)greenSlider :(UISlider *)blueSlider
{

self.optView.backgroundColor = [UIColor colorWithRed:redSlider.value green:greenSlider.value blue:blueSlider.value alpha:1.0];
}

#pragma mark --- switch的点击方法
- (void)BCRootViewSwitchDidClicked:(UISwitch *)sender
{

if (sender.isOn == YES) {
        self.optView.hidden = YES;
        return;
    }
    self.optView.hidden = NO;
    
}

#pragma mark --- stepper的点击方法
- (void)BCRootViewStepperDidClicked:(UIStepper *)sender
{

self.optView.frame = CGRectMake(self.optView.frame.origin.x, self.optView.frame.origin.y, self.optView.frame.size.width, sender.value);
}

时间: 2024-10-13 14:42:43

代理设计模式---传值的相关文章

iOS 代理反向传值

在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳转到界面B,在界面B的输入框中输入字符串,在界面A的label上显示.这是一个典型的反向传值的例子.这个例子的核心是:"在界面B的输入框中输入字符串,在界面A的label上显示".也就是说:"界面B委托界面A显示字符串,页面A是界面B的代理".委托方向代理方反向传值. 那么我们该怎么用代理设

IOS之Objective-C学习 代理设计模式

鉴于Objective-C是不支持多继承的,所以需要用协议来代替实现其他类的方法,所以有了代理设计模式. 代理,又称委托,delegation. 代理模式可以让一个单继承的类实现父类以外其他类的方法.代理也可以用于传值. 我们先来说说原理,最后再看看是如何传值的. 如图选取Objective-C File并选择Protocol创建文件后在该协议文件中写入方法. myProtocol.h @protocol myDelegation <NSObject> -(void)method1; -(vo

代理设计模式

1. 什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 什么是代理设计模式 生活中大家一定遇到这样的情况了:比如说我要买一包纸,不妨就是心相印的吧,那一般人的话我应该不是去心相印的工厂里面直接去买吧,而是我们在心相印专卖店或者什

UI开发----target/action设计模式和代理设计模式以及手势识别器

//  Created By 郭仔  2015年04月16日21:50:33 眼睛有点痛,视力也在急速下降,心灵之窗,注意保护! ================================================ 耦合是衡量?一个程序写的好坏的标准之?一, 耦合是衡量模块与模块之间关联程度的指标 "?高内聚,低耦合"是?面向对象编程的核⼼心思想: ================ 设计模式思想很重要的 ================== target/action设计模

你真的了解iOS代理设计模式吗?

OS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象.委托者.协议三部分组成. block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起来逻辑清晰代码整齐. target action:通过将对象传递到另一个类中,在另一个类中将该对象当做target的方式,来调用该对象方法,从

开发进阶11_代理设计模式_键盘的简单处理

代理设计模式: 1.使用场合 -> A想让B帮忙做一些事情,就让B成为A的代理 ->A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理 ->B想监听A所做的一些事情,就让B成为A的代理 2.使用步骤 ->定义一份协议 ->B要遵守协议,实现相应的方法 ->A中要定义一个代理属性,id<协议> delegate ->创建B对象,设置A的delegate属性为B对象 键盘的简单处理: TextField:keyborad type属性

Objectvie - c代理设计模式

代理(delegate) 也称为委托,事情发生后,自己不处理,让别人来处理. 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 代理设计模式的角色: 1.抽象角色:声明真实对象和代理对象的共同接口:再这里是协议protocol 2.代理角色:代理对象角色内容含有对真是对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以 便在任何时刻都能代替真实对象,同时代理对象可以再执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装. 3.真实角色:代理角色所代表的

OC9_代理正向传值

// // ProtectedDeleagate.h // OC9_代理正向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> @protocol ProtectedDeleagate <NSObject> - (void)bark:(NSInteger)c

OC10_代理反向传值

// // ProtectedDelegate.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> @protocol ProtectedDelegate <NSObject> - (void)bark; @end // // D