iphone 使用委托(delegate)在不同的窗口之间传递数据

在IOS里两个UIView窗口之间传递参数方法有很多,比如

1.使用SharedApplication,定义一个变量来传递.

2.使用文件,或者NSUserdefault来传递

3.通过一个单例的class来传递

4.通过Delegate来传递。

前面3种方法,暂且不说,这次主要学习如何使用通过Delegate的方法来在不同的UIView里传递数据 。

比如: 在窗口1中打开窗口2,然后在窗口2中填入一个数字,这个数字又回传给窗口1。

窗口1

窗口2

窗口2的结果传递给窗口1

1.首先定义个一委托UIViewPassValueDelegate用来传递值

@protocol UIViewPassValueDelegate

- (void)passValue:(NSString *)value;

@end

这个protocol 就是用来传递值

2.在窗口1的头文件里,声明delegate

#import <UIKit/UIKit.h>
#import "UIViewPassValueDelegate.h"
@interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate>
{
    UITextField *_value;
}
@property(nonatomic, retain) IBOutlet UITextField *value;

- (IBAction)buttonClick:(id)sender;

@end

并实现这个委托

- (void)passValue:(NSString *)value
{
  self.value.text = value;
    NSLog(@"the get value is %@", value);
}

button的Click方法,打开窗口2,并将窗口2的delegate实现方法指向窗口1。

- (IBAction)buttonClick:(id)sender
{
    ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]];
    valueView.delegate = self;
    [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self presentModalViewController:valueView animated:YES];
}

第二个窗口的实现

.h 头文件

#import <UIKit/UIKit.h>
#import "UIViewPassValueDelegate.h"

@interface ValueInputView : UIViewController {

NSObject<UIViewPassValueDelegate> * delegate;
    UITextField *_value;
}

@property(nonatomic, retain)IBOutlet UITextField *value;
@property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;

- (IBAction)buttonClick:(id)sender;

@end

.m实现文件

#import "ValueInputView.h"

@implementation ValueInputView

@synthesize delegate;
@synthesize value = _value;
- (void)dealloc {
    [self.value release];
    [super dealloc];
}

- (IBAction)buttonClick:(id)sender
{
    [delegate passValue:self.value.text];
    NSLog(@"self.value.text is%@", self.value.text);
    [self dismissModalViewControllerAnimated:YES];    
   
}
- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc. that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code.
}
*/

@end

XCode项目文件下载

转载于:https://www.cnblogs.com/likwo/archive/2011/03/02/1968785.html

iphone 使用委托(delegate)在不同的窗口之间传递数据相关推荐

  1. VB如何在窗口之间传递数据?

    有多种方法可以在窗口之间传递数据,比如: 1.在模块文件(Module)中声明一个全局公共变量,然后在其他窗体中就可以通过这个变量来存取数据了,如: 在模块文件中声明变量a Public a as s ...

  2. MFC不同窗口之间传递数据

    一.全局变量法 1)先生成模态对话框. 主窗口 子窗口 2)在主窗口的按钮控件写如下代码 CString global_msg; void Cexample1Dlg::OnBnClickedButto ...

  3. PowerBuilder窗口之间传递多参数的方法

    PowerBuilder窗口之间传递多参数的方法 http://www.21tx.com 2002年05月12日 Blog oceanaut 在PowerBuilder中函数OpenWithParm, ...

  4. C#中不同窗口之间传递值的两种方法

    在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法: 项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和Text ...

  5. pyqt5窗口之间传递信号_PyQt5不同窗口之间的值传递

    PyQt5 提供很多标准对话框, 这里主要讲自定义对话框怎么使用自定义信号来做消息传递 话不多说, 先上代码: from PyQt5.QtWidgets import QApplication, QW ...

  6. 窗口之间传递消息的一个方法

    发送窗口的代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  7. Qt/C++主窗口和子窗口之间传递参数

    一.用信号和槽 二.在主窗口声明一个子窗口的指针,用这个指针调用子窗口的函数 dialog *pic=new dialog(); pic->getColor(QColor col); col就可 ...

  8. pyqt5窗口之间传递信号_pyQT5 实现窗体之间传值的示例

    准备 一个MainWindow和一个WidgetForm,总代码如下 # -*- coding: utf-8 -*- from PyQt5 import QtWidgets from main_win ...

  9. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

最新文章

  1. windows 获取当前进程/线程的ID、句柄和内核地址
  2. [转载]玩转Asp.net MVC 的八个扩展点
  3. 【机器学习】scikit-learn 1.0 版本重要新特性一览
  4. 用python绘制好看的图形_如何使用Python绘制好word cloud,怎么,画出,好看,的,词,云图...
  5. Storm源码分析之四: Trident源码分析
  6. 《自卑与超越》读书笔记(part5)--如果教育者把性格和智力的发展都归之于遗传,那么教育就没有什么意义了
  7. matlab GUI——按下按钮在指定的坐标下绘制函数图像
  8. xss漏洞php注射实战,利用XSS渗透DISCUZ 6.1.0实战
  9. NOIP2011 选择客栈(洛谷P1311)
  10. Protobuf生成Go代码指南
  11. RFIC4463_F3CD
  12. java millis_Java Duration.getMillis方法代码示例
  13. 用java实现学生成绩管理系统_学生成绩管理系统(java实现)
  14. 网络存储 数据容灾 学习笔记4
  15. 上海“随申码”研发幕后::倒排期的3天!
  16. uniapp 微信小程序 分片 断点续传 大文件上传
  17. NLP情感分析——KNN算法
  18. 前端学习从入门到高级全程记录之8 (PS基本使用综合案例)
  19. Java埋码_oCPC JS SDK 基础代码安装指南
  20. 解决了联想i908手机SIM卡注册失败、受限服务的BUG

热门文章

  1. LIVE555再学习 -- testRTSPClient 实例
  2. zcmu2165(分组背包)
  3. 夏普电视android4.4.2,夏普电视怎么投屏 夏普电视投屏设置方法【详解】
  4. 【译】Jumping into Solidity —The ERC721 Standard (Part 1)
  5. mob sdk vue 短信验证_短信接口那些事儿,你知道多少?
  6. 两个软件相互交换数据_六轴算法机软件使用说明
  7. JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
  8. matlab cep,【CEP】重构和改进HelloInsightObservable
  9. 非确定性算法_带你从不同角度了解强化学习算法的分类
  10. python计算两个数乘积_如何用PYTHON使两个数字总和变成乘积