• iPhone开发之窗口之间传递数据之Delegate


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

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

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

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

     4.通过Delegate来传递。 

    这次主要学习如何使用通过Delegate的方法来在不同的UIView里传递数据 。

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

    窗口1

     

    窗口2

     

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

     

    工程截图:

    窗口一:

    //
    // ViewController.h
    // DelegateDemo
    //
    // Created by Fox on 12-3-21.
    // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
    //

    #import <UIKit/UIKit.h>


    //定义一个协议用来传值
    @protocol UIViewPassValueDelegate

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

    @end


    //实现协议
    @interface ViewController : UIViewController <UIViewPassValueDelegate>{

    }
    @property (retain, nonatomic) IBOutlet UITextField *texta;
    - (IBAction)openPress:(id)sender;

    @end
    //
    // ViewController.m
    // DelegateDemo
    //
    // Created by Fox on 12-3-21.
    // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
    //

    #import "ViewController.h"
    #import "ViewBController.h"

    @implementation ViewController
    @synthesize texta;


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

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


    - (IBAction)openPress:(id)sender {
    ViewBController *viewb = [[ViewBController alloc] initWithNibName:@"ViewBController" bundle:nil];
    viewb.delegate = self;
    [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self presentModalViewController:viewb animated:YES];

    }
    - (void)dealloc {
    [texta release];
    [super dealloc];
    }

    //实现协议的方法
    #pragma mark UIViewPassValueDelegate mothod
    - (void)passValue:(NSString *)value
    {
    self.texta.text = value;
    NSLog(@"the get value is %@", value);
    }

    @end

    窗口二:

    //
    // ViewBController.h
    // DelegateDemo
    //
    // Created by Fox on 12-3-21.
    // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
    //

    #import <Foundation/Foundation.h>
    #import "ViewController.h"

    @interface ViewBController : UIViewController{
    NSObject<UIViewPassValueDelegate> *delegate;//定义协议

    }

    @property (retain, nonatomic) IBOutlet UITextField *text;
    @property (retain, nonatomic) NSObject<UIViewPassValueDelegate> *delegate;
    - (IBAction)buttonpress:(id)sender;
    @end
    //
    // ViewBController.m
    // DelegateDemo
    //
    // Created by Fox on 12-3-21.
    // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
    //

    #import "ViewBController.h"

    @implementation ViewBController
    @synthesize text;
    @synthesize delegate;

    - (void)dealloc {
    [text release];
    [super dealloc];
    }

    - (IBAction)buttonpress:(id)sender {
    [delegate passValue:self.text.text];//调用协议的方法
    NSLog(@"self.value.text is%@", self.text.text);
    [self dismissModalViewControllerAnimated:YES];
    }
    @end






    参考来自:http://www.cnblogs.com/likwo/archive/2011/03/02/1968785.html

  • 相关阅读:
    C# 图片处理(添加水印 & 原尺寸压缩 & 等比缩放 & 创建缩略图)
    Quill中文文档及基本使用
    2015年 阿里2道前端笔试题+堆糖2道前端笔试题
    Guava Ordering , table BiMap Multimap RangeMap (Map的骚操作)
    9条消除if...else的锦囊妙计,助你写出更优雅的代码 (转) 主要是设计模式
    Docker容器性能监控工具google/cadvisor
    双重检查锁的漏洞 volatile 指令进行重排
    java使用AES加密解密 AES128ECB加密
    Hutool——国产良心工具包, 加密,身份证处理
    浏览器解析工具UserAgentUtils
  • 原文地址:https://www.cnblogs.com/foxmin/p/2410077.html
Copyright © 2020-2023  润新知