Snail—UI学习之自定义通知NSNotification

背景是:一个界面跳转到第二个界面 然后 第一个界面发了一个通知  然后第二个界面收到这个通知后 把里面的数据取出来

在RootViewController.m中写入下面代码

#import "WJJRootViewController.h"
#import "WJJFirstViewController.h"

@interface WJJRootViewController (){
    UITextField * _textField;
}

@end

@implementation WJJRootViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor greenColor];
	// Do any additional setup after loading the view.
    _textField = [[UITextField alloc] initWithFrame:CGRectMake(30, 40, 240, 30)];
    _textField.borderStyle = UITextBorderStyleRoundedRect;
    _textField.placeholder = @"请输入:";
    _textField.clearButtonMode = UITextFieldViewModeAlways;
    _textField.keyboardType = UIKeyboardTypeDefault;
    _textField.returnKeyType = UIReturnKeyGo;

    //设置textField的代理 要让viewController为他收起键盘
    _textField.delegate = self;

    [self.view addSubview:_textField];
    [self createButton];
}

- (void)createButton{

    UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(20, 80 , 50, 50);
    button.backgroundColor = [UIColor blackColor];
    [button setTitle:@"点我" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(nextPage) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

}

- (void)nextPage{
    //新建一个界面
    WJJFirstViewController * firstViewController = [[WJJFirstViewController alloc] init];
    //设置反转风格
    firstViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    //从第一个界面转到第二个界面 有动画
    [self presentViewController:firstViewController animated:YES completion:nil];

    //发一个通知 如果第二个界面接收这个通知的话,就会得到通知里面的数据
    //写在跳转界面之后 这样跳转后第二个界面才可以接收
    [[NSNotificationCenter defaultCenter] postNotificationName:@"1523" object:_textField.text];
}

//那么在第二个界面中就要接收这个通知的话 代码如下

#import "WJJFirstViewController.h"

@interface WJJFirstViewController (){
    UILabel * _label;
}

@end

@implementation WJJFirstViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
    _label = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 200, 50)];
    _label.backgroundColor = [UIColor grayColor];
    [self.view addSubview:_label];
    //get:方法是接收到通知后 做得操作  name:类似频道 在这个频道上就能接收到这个通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(get:) name:@"1523" object:nil];
}

- (void)get:(NSNotification *)noti{

    //得到通知里面的对象
    id obj = noti.object;
    NSString * str = (NSString *)obj;
    _label.text = str;

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

效果如下

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-13 14:14:14

Snail—UI学习之自定义通知NSNotification的相关文章

Snail—UI学习之自定义标签栏UITabBarController

这里的背景跟上面的差不多 不过这里要用到AppDelegate的单例进行传值 首先到AppDelegate.h文件中 <span style="color:#FF0000;">#import <UIKit/UIKit.h> @interface WJJRootViewController : UITabBarController //声明一UIButton属性 来记录当前按下的按钮 @property (nonatomic,strong) UIButton *

Snail—UI学习之自定义键盘及键盘收起(待完善)

在viewController.h中加入代理 #import <UIKit/UIKit.h> @interface WJJRootViewController : UIViewController <span style="color:#FF0000;"><UITextFieldDelegate></span> @end viewController.m中代码展示 #import "WJJRootViewController.h

Snail—UI学习之自定义导航栏NSNavigationController

首先新建一个RootViewController 再建一个FirstViewController 在RootViewController.m中写入 #import "WJJRootViewController.h" #import "WJJFirstViewController.h" @interface WJJRootViewController () @end @implementation WJJRootViewController - (id)initWit

Snail—UI学习之UITableView之自定义UITableViewCell

之前都是用得系统的UItableViewCell 局限性比较大 不够自由 自定义的cell满足了我们所有的需求 以后做项目的时候也是大部分都是用自定义的 后面我们要把数据放在数据模型里 数据源数组里将要存储的是model BookModel.h #import <Foundation/Foundation.h> @interface WJJBookModel : NSObject @property (nonatomic,copy) NSString * title; @property (n

(七十二)自定义通知NSNotification实现消息传递

众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,还有一种是基于通知进行的消息传递,我们常常是使用系统的通知,来实现一些功能,例如利用键盘尺寸改变的通知,我们可以根据键盘的位置改变输入框的位置,从而避免输入框被键盘遮挡. 除了利用系统的通知,我们还可以通过自己创建通知的办法来完成一些消息传递,以XMPP登录为例,如果用户之前没有注销,那么在启动客户端时应该自动登录,登录在XMPP的工具类完成,而当前视图在登陆完成之前应当用网络连接的指示器(Activity Indi

【OC学习-34】通知NSNotification,类似于KVO,用于对象之间监听然后发通知提醒

通知其实和KVO类似,就是先在类A中设置通知,然后再类B中设置个监听这个通知的方法,当然可以通过这个通知方法可以传递一些参数,得到这个参数之后,一般是触发一个动作,此处举例就是触发输出一些内容而已. (1)在Child类中初始化一个实例变量为100,每次递减2,当小于90时候触发通知. //Child.h #import <Foundation/Foundation.h> @interface Child : NSObject @property(nonatomic,assign)NSInte

Snail—UI学习之系统标签栏UITabBarController

背景条件是 有一个根控制器 继承于UITabBarController 然后 建四个UIViewController 再然后创建一个UIViewController 我们让它作为上面四个其中之一的子界面 然后再RootViewController中写入下面代码 #import "WJJRootViewController.h" #import "WJJFirstViewController.h" #import "WJJSecondViewControll

Snail—UI学习之UITextField

简单看一下UITextField的属性 - (void)createTextField{ UITextField * textField = [[UITextField alloc] initWithFrame:CGRectMake(40, 40, 240, 40)]; //设置UITextField的边框风格,否则看不见textField 盲点的话可以点到它 /* UITextBorderStyleRoundedRect 圆角 UITextBorderStyleBezel 上.左有边框 UIT

Snail—UI学习之得到某组件的方法

第一种方法:根据传入函数的参数对象的tag属性区分 比如 多个按钮执行同一个方法,但是不同的方法执行时,里面的逻辑又不一样 那就得加以区分 这时可以用tag来区别 //再新建一个Button UIButton * button2 = [UIButton buttonWithType:UIButtonTypeSystem]; button2.frame = CGRectMake(20, 60, 280, 30); button2.tag = 2; button2.backgroundColor =