码迷,mamicode.com
首页 > 其他好文 > 详细

KVO---视图间数据的传递:标签显示输入的内容【多个视图中】

时间:2014-10-29 14:58:08      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:kvo传值   视图间传值   传值   

RootViewController.m

#import "ModalViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController {

    ModalViewController *modalCtrl;
    
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor redColor];
    
    UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 20)];
    textLabel.tag = 100;
    textLabel.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:textLabel];
    
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(50, 150, 100, 30);
    [button setTitle:@"打开" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
    
    modalCtrl = [[ModalViewController alloc] init];
    
    //监听modal控制器的text属性
    [modalCtrl addObserver:self forKeyPath:@"text"
                   options:NSKeyValueObservingOptionNew
                   context:NULL];
    
}

//KVO触发方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    if ([keyPath isEqualToString:@"text"]) {
        
        NSString *text = [change objectForKey:@"new"];
        UILabel *label = (UILabel *)[self.view viewWithTag:100];
        label.text = text;
        
    }
    
}

- (void)buttonAction
{
    [self presentViewController:modalCtrl animated:YES completion:NULL];
    
}
ModalViewController.m
@interface ModalViewController ()
{
    NSString *_text;
}
@end

@implementation ModalViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor greenColor];
    
    UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(50, 60, 160, 30)];
    textFiled.tag = 100;
    textFiled.delegate = self;
    textFiled.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:textFiled];
    //显示键盘
    [textFiled becomeFirstResponder];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(50, 150, 100, 30);
    [button setTitle:@"返回" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
}

//按钮点击事件
- (void)buttonAction
{
    [self dismissViewControllerAnimated:YES completion:NULL];
    
//    UITextField *field = (UITextField *)[self.view viewWithTag:100];
//    NSString *text = field.text;
    
//    self.text = text;
    
}

#pragma UITextField delegate

//点击return调用的协议方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    //收起键盘
    [textField resignFirstResponder];
    
    return YES;
    
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSLog(@"string:%@",string);
//    string 是正在输入的最后一个字符
    
    NSLog(@"%@",textField.text);
//    textField.text 是输入的内容的前段字符(最后一个字符不包括)

//    UITextField *field = (UITextField *)[self.view viewWithTag:100];
//    NSString *text = field.text;
    NSString *str = [NSString stringWithFormat:@"%@%@",textField.text,string];
    NSLog(@"str:%@",str);
    self.text = str;
    
    return YES;
    
}


KVO---视图间数据的传递:标签显示输入的内容【多个视图中】

标签:kvo传值   视图间传值   传值   

原文地址:http://blog.csdn.net/pengyuan_d/article/details/40585083

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!