/** * 单例传值 对象且初始化一次,页面之间相隔很多依旧可传值 */ #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @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 <UIKit/UIKit.h> @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 <UIKit/UIKit.h> @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 <Foundation/Foundation.h> @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