delegate传值-demo
来源:互联网 发布:linux vi 加行号 编辑:程序博客网 时间:2024/06/14 00:55
之前一直困惑delegate的设计模式,自己闲的时候写了个demo,加了点注释,希望初学者可以看看,不妥之处请大家指出。
这里只粘贴出关键代码:
一、 自定义协议:
// xyzDelegate.h
#import <Foundation/Foundation.h>
@protocol xyzDelegate <NSObject>
-(void)showName:(NSString *)name;
@end
//
二、通用写法都写为delegate并给它加nonatomic,assign防止魔鬼引用
B.h
#import <UIKit/UIKit.h>
#import "xyzDelegate.h"
@interface ViewControllerB :UIViewController
{
id<xyzDelegate>delegate;
}
@property(nonatomic,assign)id<xyzDelegate>delegate;
@end
-(void)transvalue{
//上个页面跳过来的时候设置了指针委托,那么这里就会识别到delegate响应了这个方法;
if ([delegate respondsToSelector:@selector(showName:)])
{
UITextField *mytext = (UITextField *)[self.viewviewWithTag:1001];
//step01
[delegateshowName:mytext.text];
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
}
//调到下个页面,此时设置下个页的delegate方法给ViewController本身,这个协议及自定义的协议,协议的是由B来配置的,那么B里面可以检测到其是否将自己的delegate委托给某人,这里是委托给ViewController,让它来完成本来应该让B自己来做的事情,现在由A代劳;
-(void)jp2next
{
ViewControllerB *bvc = [[ViewControllerBalloc]init];
//设置委托
bvc.delegate =self;
[self.navigationControllerpushViewController:bvcanimated:YES];
[bvc release];
}
//delegate's method
//step02
//这样viewController和viewcontrollerB就产生了通信
//这里的name及由viewControllerb中传过来的
-(void)showName:(NSString *)name
{
NSLog(@"将b的delegate指定给a,让a来实现");
lbe.text = [NSStringstringWithFormat:@"%@",name];
NSLog(@"%@",name);
}
- delegate传值-demo
- iOS Delegate(代理)传值~demo
- delegate & protocol simple code demo
- 使用delegate的一个demo
- .net Event/Delegate Simple Demo
- Delegate传值
- Delegate传值
- event & delegate Demo(事件&委托示例)
- IOS Delegate传值
- 自定义Delegate 传值
- delegate、传值、跳转页面
- delegate、传值、跳转页面
- swfie delegate传值
- delegate
- delegate
- Delegate
- delegate
- Delegate
- 我的vim配置文件.vimrc(一)(最后一行的配置会方便很多)
- Java与C#交互DES算法加密解密数据
- java定时器
- android 之 SQLite
- 防黑必学cmd命令集合
- delegate传值-demo
- sip协议中重要名词Session(会话)、dialog(对话)、transaction(事务)的理解
- My97DatePicker使用说明文档
- Oracle在Linux内核参数的修改
- 养成好的开发习惯
- Linux fuser命令详解
- Android换肤的两种思路
- CPU的内部物理结构介绍
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称 - [VC++编程]