控制器之间的数据传递——全局变量传值
来源:互联网 发布:淘宝买家如何快速升钻 编辑:程序博客网 时间:2024/06/05 13:47
全局变量传值
一. 实现步骤
在界面2中声明一个全局变量,并且用它保存需要传递的值
在界面1中用extern声明界面2中的全局变量,就可使用他所保存的值赋值
二. extern优缺点
优点
a.全局可视,任何一个函数都可以访问和更改变量值
b.内存地址固定,读写效率高缺点
a.容易造成命名冲突
b.当值不正确或者出错时,很难确定是哪个函数更改过这个变量
c.不支持多线程
三. 具体实现
1. AppDelegate类
---------- AppDelegate.m文件#import "AppDelegate.h"#include "OneViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1. 创建窗口 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2. 创建窗口的根控制器 // 2.1 创建导航控制器的根控制器 UIViewController *oneVc = [[OneViewController alloc] init]; // 2.2 创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:oneVc]; // 2.3 给窗口设置根控制器 self.window.rootViewController = nav; // 3. 设置窗口为主窗口并显示窗口 [self.window makeKeyAndVisible]; // 隐藏导航控制器的导航条 nav.navigationBarHidden = YES; return YES;}@end
2. OneViewController类
---------- OneViewController.m文件#import "OneViewController.h"#import "TwoViewController.h"// 必须要用extern关键字修饰,才能使用extern NSString *PassData;@interface OneViewController ()@property (nonatomic,strong) UITextField *textField;@end@implementation OneViewController- (void)viewDidLoad { [super viewDidLoad]; //设置控制器View的背景颜色 self.view.backgroundColor = [UIColor greenColor]; // 创建点击按钮 UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom]; clickBtn.frame = CGRectMake(10, 100, 80, 40); clickBtn.backgroundColor = [UIColor whiteColor]; [clickBtn setTitle:@"到界面2" forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [clickBtn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:clickBtn]; // 创建文本框 _textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 150, 250, 40)]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.backgroundColor = [UIColor whiteColor]; [self.view addSubview:_textField];}#pragma mark - 点击事件- (void)btnClick { // 创建界面2,并压入栈 TwoViewController *twoVc = [[TwoViewController alloc] init]; [self.navigationController pushViewController:twoVc animated:YES];}- (void)viewWillAppear:(BOOL)animated { _textField.text = PassData;}@end
3. TwoViewController类
---------- TwoViewController.m文件#import "TwoViewController.h"// 设置全局变量,用于在不同的文件中传值NSString *PassData;@interface TwoViewController ()@property (nonatomic,strong) UITextField *textField;@end@implementation TwoViewController- (void)viewDidLoad { [super viewDidLoad]; //设置控制器View的背景颜色 self.view.backgroundColor = [UIColor yellowColor]; // 创建点击按钮 UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom]; clickBtn.frame = CGRectMake(10, 100, 80, 40); clickBtn.backgroundColor = [UIColor whiteColor]; [clickBtn setTitle:@"传 值" forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [clickBtn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:clickBtn]; // 创建文本框 _textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 150, 250, 40)]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.backgroundColor = [UIColor whiteColor]; [self.view addSubview:_textField];}#pragma mark - 点击事件- (void)btnClick { PassData = _textField.text; // 跳转界面 [self.navigationController popViewControllerAnimated:YES];}@end
0 0
- 控制器之间的数据传递——全局变量传值
- 控制器之间的数据传递——属性传值
- 控制器之间的数据传递——代理传值
- 控制器之间的数据传递——通知传值
- 控制器之间的数据传递——storyboard中控制器的数据传递
- 控制器之间的数据传递——Block传值
- 控制器之间的数据传递——UIApplication传值
- 控制器之间的数据传递——自定义单例传值
- 控制器之间的数据传递——NSUserDefaults传值
- 两个控制器之间的数据传递 (MVC)
- (iOS)控制器之间数据的传递
- 视图控制器ViewControllers之间的数据传递
- iOS控制器之间数据的双向传递
- UI - 视图控制器之间的值传递
- 控制器和视图之间传递数据的几种方式
- 控制器的数据传递
- 使用全局变量在Activity之间传递数据
- MVC:控制器与视图之间的值传递
- Gym 100197G Robbers (卡精度)
- 第十二周上机实践项目1.3
- 【Linux网络编程】多播、组播
- numpy multiply
- 使用ndk 编译 编译ffmpeg 并使用
- 控制器之间的数据传递——全局变量传值
- 12.2time中的运载重载
- UVA - 140 Bandwidth
- Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构
- Eclipse安装JD-Eclipse反编译插件
- JAVA包
- 《C++编程规范——101条规则、准则与最佳实践》笔记000
- 当鼠标移动到div或者超链接只上时,显示相应的鼠标形状
- 12.3