zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
    网络监控工具 iftop dstat
    可进行组合的枚举
    查看Qt自带的QSS
    通过文件设置QSS
    QString转QByteArray
    error: jump to case label
    error: static member function cannot have cv-qualifier
    C++ std::vector的大小和容量
    获取QMessageBox返回值
  • 原文地址:https://www.cnblogs.com/foxmin/p/2410077.html
Copyright © 2011-2022 走看看