传值过程中, 会遇到一个变量可能被多个类使用, 的情况
最简单的办法是, 将变量定义在单例类中, 操作时直接使用
这里简单的介绍如何使用单例.
步骤就是:
1. 定义单例类
2 . 类方法创建单例对象
3 . 根据需要实现单例
注意: 单例只初始化一次; 不用管理内存; 方法命名规范是以share开头; 单例继承于NSObject
简单的例子:
从root控制器 传值到 second控制器,
需要创建两个控制器, 和一个单例类
声明和实现单例类
#import <Foundation/Foundation.h>
@interface MyHandle : NSObject
// 1. 声明下
+ (MyHandle *)shareHandle;
// 2. 声明一个属性 用于传值
@property (nonatomic, retain) NSString *name;
@end
+ (MyHandle *)shareHandle
{
// 在静态区定义个指针
static MyHandle *handle = nil;
// 如果这个指针指向的区域为空
if (handle == nil) {
// 就在 堆区开辟空间 创建对象
handle = [[MyHandle alloc] init];
}
return handle;
}
root控制器中设置需要的控件, 别忘记导入头文件
@property (nonatomic, retain) UITextField *textField;
- (void)dealloc
{
[_textField release];
[super dealloc];
}
添加一个输入框和按钮,
- (void)addSubView
{
self.textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 160, 200, 60)];
self.textField.backgroundColor = [UIColor cyanColor];
[self.view addSubview:self.textField];
[self.textField release];
UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
button.frame = CGRectMake(100, 300, 100, 50);
[button addTarget:self action:@selector(actionButton:) forControlEvents:(UIControlEventTouchUpInside)];
button.backgroundColor = [UIColor blackColor];
[self.view addSubview:button];
[button release];
}
- (void)actionButton:(UIButton *)button
{
// 点击跳转 传值
// 创建单例对象 并赋值
[MyHandle shareHandle].name = self.textField.text;
// 跳转
SecondViewController *secondVC = [[SecondViewController alloc] init];
[self.navigationController pushViewController:secondVC animated:YES];
[secondVC release];
}
需要传值的 second控制器中接受下, 在 viewDidLoad中
// 修改标题
self.navigationItem.title = [MyHandle shareHandle].name;
over