博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之页面传值-----单例传值、通知传值
阅读量:5272 次
发布时间:2019-06-14

本文共 3579 字,大约阅读时间需要 11 分钟。

单例传值

//单例的.h文件

@property(strong,nonatomic)NSString *name;

+(userInfo *)shareinstence;

 

//单例的.m文件

static userInfo *instence=nil;

 

//第一种写法

//+(userInfo *)shareinstence

//{

//    //懒加载

//    if (instence==nil)

//    {

//        instence=[[userInfo alloc] init];

//    }

//    return instence;

//}

 

//第二种写法

+(userInfo *)shareinstence

{

    @synchronized(self)

    {

        if (instence==nil)

        {

            instence=[[userInfo alloc] init];

        }

        return instence;

    }

    //懒加载

    

}

//重写allocWithZone方法

+(instancetype)allocWithZone:(struct _NSZone *)zone

{

    if (instence==nil)

    {

        instence=[super allocWithZone:zone];

    }

    return instence;

}

//重写copyWithZone

-(id)copyWithZone:(NSZone *)zone

{

    return self;

}

 

//然后新建两个类

//第一个类.h

#import <UIKit/UIKit.h>

#import "userInfo.h"

#import "secondViewController.h"

 

@interface ViewController : UIViewController

 

@property(strong,nonatomic)UITextField *textname;

 

 

@end

 

//第一个类.m

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

   

    self.textname=[[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];

    self.textname.borderStyle=1;

    [self.view addSubview:self.textname];

}

-(void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    userInfo *info=[userInfo shareinstence];

    NSLog(@"%@",info.name);

}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    userInfo *userinfo=[userInfo shareinstence];

    userinfo.name=self.textname.text;

    

    [self presentViewController:[secondViewController new] animated:YES completion:^{

        NSLog(@"下一页");

    }];

}

 第二个类也是一样的道理

 

通知传值

创建两个类,继承于UIviewcontroller

第一个类.h

#import <UIKit/UIKit.h>

#import "secondViewController.h"

@interface ViewController : UIViewController

 

@property(strong,nonatomic)UITextField *txt;

 

 

@end

 

第一个类.m

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    self.txt=[[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];

    self.txt.borderStyle=1;

    [self.view addSubview:self.txt];

    

}

-(void)viewWillAppear:(BOOL)animated

{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myPostValue:) name:@"LAY" object:nil];

    

}

-(void)dealloc

{

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LAY" object:nil];

    

}

-(void)myPostValue:(NSNotification *)noti

{

    self.txt.text=noti.object;

}

 

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    secondViewController *second=[[secondViewController alloc] init];

    [self presentViewController:second animated:YES completion:^{

        NSLog(@"下一页");

    }];

}

 

第二个类的.h

#import <UIKit/UIKit.h>

 遵循UITextFieldDelegate的协议

@interface secondViewController : UIViewController<UITextFieldDelegate>

 

@property(strong,nonatomic)NSString *str;

 

@property(strong,nonatomic)UITextField *txtinfo;

 

@end

 

 

第二个类的.m

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

  

    self.view.backgroundColor=[UIColor grayColor];

    NSLog(@"%@",self.str);

    self.txtinfo=[[UITextField alloc] initWithFrame:CGRectMake(100, 100, 150, 50)];

    self.txtinfo.borderStyle=1;

    self.txtinfo.delegate=self;

    self.txtinfo.text=self.str;

    

    [self.view addSubview:self.txtinfo];

    

}

 

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

    

    //通知

    NSNotification *notification=[[NSNotification alloc] initWithName:@"LAY" object:textField.text userInfo:nil];

    [[NSNotificationCenter defaultCenter]postNotification:notification];

    

    //隐藏键盘

    if ([textField isFirstResponder])

    {

        [textField resignFirstResponder];

    }

    

    //隐藏页面

    [self dismissViewControllerAnimated:YES completion:^{

        NSLog(@"返回");

    }];

    return YES;

}

 

转载于:https://www.cnblogs.com/layios/p/5285363.html

你可能感兴趣的文章
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
Vue.js的从入门到放弃进击录(二)
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
Mesh属性[Unity]
查看>>
实现绘制图形的ToolBar
查看>>
C# 串口接收数据中serialPort.close()死锁
查看>>
Python3控制结构与函数
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>