zoukankan      html  css  js  c++  java
  • iPhone使用委托在不同的窗口之间传递数据

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

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

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

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

    4、通过Delegate来传递

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

    比如: 在窗口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;
    //http://stackoverflow.com/questions/6317631/obj-c-synthesize

    -(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];  
    }

    @end

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/zhwl/p/2600553.html
Copyright © 2011-2022 走看看