通知传值

#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]];
    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"
@interface RootViewController ()

@property(nonatomic, strong) UILabel *messageLabel ;

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //添加按钮
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(100, 100, 150, 60);
    [button setTitle:@"push到下一个页面" forState:0];
    [button setBackgroundColor:[UIColor greenColor]];
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

    //添加Label
    self.messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 200, 150, 60)];
    self.messageLabel.backgroundColor = [UIColor greenColor];
    self.messageLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:self.messageLabel];

    [self addNotification];
}

/**
 *  添加通知
 */
- (void)addNotification{
    /**
     *  @param receiveNotification: 接收通知后执行的方法
     *
     *  @name: 通知的名字
     */
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"notification" object:nil];
}
/**
 *  接收到通知
 */
- (void)receiveNotification:(NSNotification*)info{
    NSDictionary *dict = info.userInfo;
    NSString *message = dict[@"info"];
    if (message) {
        NSLog(@"%@",message);
        self.messageLabel.text = message;
    }
}

/**
 *  按钮事件
 */
- (void)buttonAction:(UIButton*)sender{
    LFViewController *lfController = [[LFViewController alloc] init];
    [self.navigationController pushViewController:lfController animated:YES];
}

-(void)dealloc{
    //移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"notification" object:nil];
}

@end
#import <UIKit/UIKit.h>

@interface LFViewController : UIViewController

@end
#import "LFViewController.h"

@interface LFViewController ()

@end

@implementation LFViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //添加按钮
    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{
    NSDictionary *dict = @{@"info":@"a good news"};
    /**
     * @Name      通知的名字
     * @userInfo  通知携带的信息
     */
    NSNotification *notification = [[NSNotification alloc] initWithName:@"notification" object:nil userInfo:dict];
    //发送通知
    [[NSNotificationCenter defaultCenter] postNotification:notification];
    [self.navigationController popViewControllerAnimated:YES];
}

@end
时间: 2024-10-04 09:04:36

通知传值的相关文章

iOS pop使用通知传值

iOS pop回父级页面,使用通知传值 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@&q

通知传值(NSNotificationCenter)

通知传值 //流程: 1.注册通知 2.通知中心,发送一条消息通知----------其中name名字千万不要写错了,会出现在3个地方 3.实现通知中心内部的方法,并实现传值 4.第四步,消息发送完,要移除掉 代码如下: #import "FirstViewController.h" #import "SecondViewController.h" #import "UIButton+Create.h" @interface FirstViewC

几个页面跳转以及传值(通知传值)

A→B→C→D→A 其中A不是根目录,但是在D上还要跳转回去,并且不用alloc,这时我们可以用如下方法 [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: ([self.navigationController.viewControllers count] -4)] animated:YES]; 并且D要传值给A,这时通知就很好用了 通

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll

iOS通知传值的使用

通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值. 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"te

整理一下 通知传值 Block传值

Block: 一. (1) 在需要传值的界面定义属性 // 点击collectionViewCell的回调 @property (nonatomic, copy) void(^DidcollectionClick)(NSIndexPath *indexPath); 在按钮或者手势 或者代理方法中 执行block - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPa

iOS通知传值

NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"loginName"] = @"abc"; params[@"password"] = @"123456"; //创建通知 NSNotification *notification =[NSNotification notificationWithName:@"tongzh

iOS传值之通知传值(三)

输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@"textTwo", n

通知传值 notification

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.textF = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 40)]; self.textF.borderStyle = 2; self.textF.backgroundColor = [UIColor redColor]; [self.view addSubvi