/** * 单例传值 对象且初始化一次,页面之间相隔很多依旧可传值 */#import@interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window;@end
#import "AppDelegate.h"#import "RootViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:[[RootViewController alloc] init]]; self.window.rootViewController = navi; [self.window makeKeyAndVisible]; return YES;}@end
#import@interface RootViewController : UIViewController@end
#import "RootViewController.h"#import "LFViewController.h"#import "LFUser.h"//导入单例头文件@interface RootViewController ()@property(nonatomic, strong) UILabel *message ;@end@implementation RootViewController- (void)viewDidLoad { [super viewDidLoad]; //添加按钮 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(100, 100, 150, 60); [button setTitle:@"跳到下一个页面" forState:0]; [button setBackgroundColor:[UIColor greenColor]]; [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; //添加Label self.message = [[UILabel alloc] initWithFrame:CGRectMake(100, 200, 150, 60)]; self.message.backgroundColor = [UIColor greenColor]; self.message.textAlignment = NSTextAlignmentCenter; [self.view addSubview:self.message]; }/** * 页面将要出现时,读取单例的值 * 如果值为空,不显示;反之,显示 */- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //初始化单例 LFUser *user = [LFUser shareInstance]; if (user.name.length != 0) { //读取单例的值 NSString *str = [NSString stringWithFormat:@"%@-%@-%@",user.name,user.address,user.hobby]; self.message.text = str; }}/** * 按钮事件 */- (void)buttonAction:(UIButton*)sender{ /** * 属性传值,从一个控制器push到下一个控制器使用属性传值比较方便 */ LFViewController *lfController = [[LFViewController alloc] init]; [self.navigationController pushViewController:lfController animated:YES];}@end
#import@interface LFViewController : UIViewController@end
#import "LFViewController.h"#import "LFUser.h"//导入单例头文件@interface LFViewController ()@end@implementation LFViewController- (void)viewDidLoad { [super viewDidLoad]; //初始化单例 LFUser *user = [LFUser shareInstance]; //给单例的属性赋值 user.name = @"LF"; user.address = @"中国"; user.hobby = @"游泳"; //添加按钮 UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; backBtn.frame = CGRectMake(100, 100, 150, 60); [backBtn setTitle:@"返回" forState:0]; [backBtn setBackgroundColor:[UIColor greenColor]]; [backBtn addTarget:self action:@selector(backBtnAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:backBtn];}/** * backBtn按钮的事件 */- (void)backBtnAction:(UIButton*)sender{ [self.navigationController popViewControllerAnimated:YES];}@end
#import@interface LFUser : NSObject@property (nonatomic , copy) NSString *name;@property (nonatomic , copy) NSString *address;@property (nonatomic , copy) NSString *hobby;+ (LFUser*)shareInstance;@end
#import "LFUser.h"static LFUser *instance = nil;@implementation LFUser+ (LFUser*)shareInstance{ static dispatch_once_t predicate; dispatch_once(&predicate, ^{ instance = [[self alloc] init]; }); return instance;}@end