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


    RootViewController.h

    #import "ModalViewController.h"
    
    @interface RootViewController : UIViewController<ModalViewDelegate>
    

    RootViewController.m

    @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];
        //设置代理对象
        modalCtrl.delegate = self;
        
    }
    
    - (void)buttonAction
    {
        [self presentViewController:modalCtrl animated:YES completion:NULL];
        
    }
    
    //实现协议方法
    - (void)responseData:(NSString *)text {
    
        UILabel *label = (UILabel *)[self.view viewWithTag:100];
        
        label.text = text;
        
    }
    

    ModalViewController.h

    //返回文本数据
    - (void)responseData:(NSString *)text;
    
    @end
    
    @interface ModalViewController : UIViewController <UITextFieldDelegate>
    
    @property(nonatomic, assign)id<ModalViewDelegate> delegate;
    ModalViewController.m
    - (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;
        
        //推断代理是否实现了协议方法
        if ([self.delegate respondsToSelector:@selector(responseData:)]) {
            //调用协议方法
            [self.delegate responseData:text];
        }
        
    }
    
    //点击return调用的协议方法
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
    
        //收起键盘
        [textField resignFirstResponder];
        
        return YES;
        
    }
    


  • 相关阅读:
    05-3. 六度空间 (PAT)
    05-2. Saving James Bond
    05-1. List Components (PAT)
    04-3. Huffman Codes (PAT)
    04-2. File Transfer (PAT)
    04-1. Root of AVL Tree (PAT)
    03-3. Tree Traversals Again (PAT)
    03-2. List Leaves (PAT)
    03-1. 二分法求多项式单根(PAT)
    CDH Namenode自动切换(active-standby)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5262118.html
Copyright © 2020-2023  润新知