UI_AppDelegate反向传值

1.新建项目,在AppDelegate.h文件中声明实例变量  

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
//添加一个属性
@property (nonatomic,copy)NSString *textString;

@end

2.在ViewController.m文件中定义按钮(button),标签(label)

#import "ViewController.h"
#import "SubViewController.h"
#import "AppDelegate.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   //设置背景颜色
    self.view.backgroundColor = [UIColor orangeColor];
    //创建一个按钮
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
    //设置frame
    btn.frame = CGRectMake(50, 50, 100, 50);
    //设置文字
    [btn setTitle:@"切换界面" forState:UIControlStateNormal];
    //增加事件
    [btn addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
    //增加到视图中
    [self.view addSubview:btn];

    //创建一个UILabel
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 110, 100, 50)];
    //设置背景颜色
    label.backgroundColor = [UIColor redColor];
    //增加到视图中
    [self.view addSubview:label];
    //设置tag值
    label.tag = 100;
}

- (void)clickAction:(id)sender
{
    //创建视图控制器对象(需要导入头文件)
    SubViewController *subCtrl = [[SubViewController alloc] init];
    //切换视图
    [self presentViewController:subCtrl animated:YES completion:nil];
}
//重写viewDidAppear方法
-(void)viewDidAppear:(BOOL)animated
{
    //继承父类,一定要写
    [super viewDidAppear:animated];

    //获取应用对象(需要导入头文件)
    UIApplication *app = [UIApplication sharedApplication];
    //获取AppDelegate对象
    AppDelegate *appDelegate = app.delegate;
    //取到UILabel
    UILabel *label = (UILabel *)[self.view viewWithTag:100];
    //修改label上面的文字
    label.text = appDelegate.textString;
}
//在接收到内存警告的时候调用
//释放一些可以恢复的对象
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

}

@end

3.新建视图控制器SubViewController

 1 #import "SubViewController.h"
 2 #import "AppDelegate.h"
 3
 4 @interface SubViewController ()<UITextFieldDelegate>
 5
 6 @end
 7
 8 @implementation SubViewController
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12     // Do any additional setup after loading the view.
13     self.view.backgroundColor = [UIColor yellowColor];
14     //创建一个返回的按钮
15     UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
16     //设置frame
17     btn.frame = CGRectMake(50, 50, 100, 50);
18     //设置文字
19     [btn setTitle:@"返回" forState:UIControlStateNormal];
20     //增加点击事件
21     [btn addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];
22     //增加到视图上
23     [self.view addSubview:btn];
24
25     //创建一个UITextField
26     UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 110, 100, 50)];
27     //设置borderStyle
28     textField.borderStyle = UITextBorderStyleRoundedRect;
29     //增加到视图上
30     [self.view addSubview:textField];
31     //设置代理,在头文件或者匿名类中增加协议<UITextFieldDelegate>
32     textField.delegate = self;
33 }
34 - (void)backAction:(id)sender
35 {
36     [self dismissViewControllerAnimated:YES completion:nil];
37 }
38 #pragma mark - UITextFieldDelegate
39 -(BOOL)textFieldShouldReturn:(UITextField *)textField
40 {
41     //收起键盘
42     [textField resignFirstResponder];
43     //取得应用的对象(要导入头文件"AppDelegate.h")
44     UIApplication *app = [UIApplication sharedApplication];
45     //取得AppDelegate类型的对象
46     AppDelegate *appDelegate = app.delegate;
47     //把textField.text这个值传递给appDelegate的textString属性
48     appDelegate.textString =textField.text;
49
50     return YES;
51 }
52
53 - (void)didReceiveMemoryWarning {
54     [super didReceiveMemoryWarning];
55     // Dispose of any resources that can be recreated.
56 }
57
58 @end
时间: 2024-10-24 23:20:23

UI_AppDelegate反向传值的相关文章

控制器之间反向传值

控制器之间反向传值 委托(代理) 首先我们定下一个协议protocol 1. #import <Foundation/Foundation.h>2.3. @protocol ChangeText <NSObject>4.5. -(void)changeText:(NSString *)str;6. @end 控制器a遵守协议ChangeText,并实现协议的方法,控制器b公开自己的一个遵守协议ChangeText的属性delegate,在控制器a的视图转到控制器b的视图时,b.de

cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)

第三讲 Touch 前面两篇我们学习的内容,足够我们做一款简单的小游戏.也可以说,我们已经入门了,可以蹒跚的走路了. 本篇将讲解cocos2dx中很重要的touch回调机制.你肯定记得第一章做定时器时间的时候用过CC_CALLBACK_1宏定义,它让我们回调一个只有一个形参的函数来执行定时操作. 回调函数的实现(Lambda表达式) 学习本篇前请仔细学习一下C++11的特性,std::function和lambda表达式.C++11还引入了很多boost库的优秀代码,使我们在使用的时候不必再加b

OC10_代理反向传值

// // ProtectedDelegate.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> @protocol ProtectedDelegate <NSObject> - (void)bark; @end // // D

【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值

实验说明 (1)正向传值:比如A类里地值要传给B类用,就是我们先在A类中声明一个B类对象(当然B类头文件要import过来),然后把A类中得某个值传递给B类中得某个值(所以需要在B类中先准备一个变量来接受,就是用@property和@synthesize整个变量即可). (2)反向传值:比如需要把B类中的值传递给A类用.我们先在B类中写一个协议,协议里面有一个可以带参数的方法,这个参数就是我们要传递的值(这个协议也可以单独写,不一定写在B类中),然后B类遵循这个协议后,利用这个协议创建一个委托变

iOS 代理反向传值

在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳转到界面B,在界面B的输入框中输入字符串,在界面A的label上显示.这是一个典型的反向传值的例子.这个例子的核心是:"在界面B的输入框中输入字符串,在界面A的label上显示".也就是说:"界面B委托界面A显示字符串,页面A是界面B的代理".委托方向代理方反向传值. 那么我们该怎么用代理设

ios开发的block反向传值

block 的反向传值,一直以来都是copy, 今天写出来用来加深印象, 也给一些懒哥们copy的方便些.不多说,直接上代码. #import <UIKit/UIKit.h> //第一步(第二个页面.h) typedef void (^secondVcBlock)(NSString*); @interface SecondViewController : UIViewController //第二步(第二个页面.h)声明一个属性 @property(nonatomic,copy)secondV

反向传值实例

反向传值实例 1.代理反向传值 #import <UIKit/UIKit.h> //声明一个类 @class LHTableViewController; //声明一个协议 @protocol LHTableViewControllerDelegate <NSObject> //协议中的方法 -(void)LHTablieViewController:(LHTableViewController *)LHTablieViewController Color:(UIColor *)c

代理和block反向传值

代理传值: // SendViewController.h #import <UIKit/UIKit.h> @protocol SendInFor <NSObject> -(void)sendInForIdea:(NSString*)text; @end @protocol SendInForTwo <NSObject> -(void)sender:(NSString*)text; @end @interface SendViewController : UIViewC

反向传值的几种常用方法

最近项目完成的差不多了,闲下来的时间突然心血来潮想自己写写以前没用过的方法.这里就包含了几种常见的反向传值的方法. 之所以现在专门自己写反向传值的博文记录,是因为之前几乎没怎么用到这些反向传值的方法,那么这里将会描述一下像"代理"."block"."通知"."单例"这四种传值方法. 首先是代理,也就是常看到的delegate.说的通俗点,就是委托一个对象,让其帮忙处理事情,说到底就是个中介的标志.详细方案如下: 在父类中调用其