通知中心

//
//  KMainViewController.m
//  NotificationCenter
//
//  Created by xiaoyao on 15/3/18.
//  Copyright (c) 2015年 lije. All rights reserved.
//

#import "KMainViewController.h"
#import "LoginViewController.h"

#define UPDATE_LOGIN_NOTIFICATION @"updateLoginInfo"

@interface KMainViewController () {
  UILabel *_infoLabel;
  UIButton *_loginOutButton;
}
@end

@implementation KMainViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  [self setupUI];
}

- (void)setupUI {
  // username
  _infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 200, 100, 50)];
  _infoLabel.textColor = [UIColor blueColor];
  _infoLabel.textAlignment = NSTextAlignmentLeft;
  [self.view addSubview:_infoLabel];
  
  _loginOutButton = [UIButton buttonWithType:UIButtonTypeCustom];
  _loginOutButton.frame = CGRectMake(100, 300, 100, 50);
  [_loginOutButton setTitle:@"登录"forState:UIControlStateNormal];
  [_loginOutButton addTarget:self action:@selector(logOut:) forControlEvents:UIControlEventTouchUpInside];
  [_loginOutButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
  [self.view addSubview:_loginOutButton];
}

- (void)logOut:(UIButton *)buttton {
  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(updateLoginInfo:)
                                               name:UPDATE_LOGIN_NOTIFICATION
                                             object:nil];
  LoginViewController *login = [[LoginViewController alloc] init];
  [self presentViewController:login animated:YES completion:nil];
}

- (void)updateLoginInfo:(NSNotification *)notifidcation {
  if (notifidcation) {
    _infoLabel.text = notifidcation.userInfo[@"loginInfo"];
    [_loginOutButton setTitle:@"注销" forState:UIControlStateNormal];
  }
}

// 移除监听
- (void)dealloc {
  [[NSNotificationCenter defaultCenter] removeObserver:self];
}
@end
//
//  LoginControllerController.m
//  NotificationCenter
//
//  Created by xiaoyao on 15/3/18.
//  Copyright (c) 2015年 lije. All rights reserved.
//

#import "LoginViewController.h"
#define UPDATE_LOGIN_NOTIFICATION @"updateLoginInfo"

@interface LoginViewController () {
  UITextField *_userNameTextField;
  UITextField *_passwordTexttField;
}
@end

@implementation LoginViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  [self configureLayoutqLoginUI];
}

- (void)configureLayoutqLoginUI {
  NSArray *titlrArray = @[@"登录名:", @"密码:", @"请输入username", @"请输入密码", @"登录", @"取消"];
  
  CGFloat x = 20;
  CGFloat y = 200;
  CGFloat width = 80;
  CGFloat height = 50;
  for (int i = 0; i < titlrArray.count / 3; i++) {
    // 登录和密码
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, width, height)];
    titleLabel.text = [titlrArray objectAtIndex:i];
    titleLabel.textColor = [UIColor blueColor];
    titleLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:titleLabel];

    UITextField *infoTextField = [[UITextField alloc] initWithFrame:CGRectMake(x + width + 10, y, width + 100, height)];
    infoTextField.textAlignment = NSTextAlignmentLeft;
    infoTextField.placeholder = [titlrArray objectAtIndex:i + 2];
    infoTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
    infoTextField.backgroundColor = [UIColor grayColor];
    infoTextField.tag = 2000 + i;
    [self.view addSubview:infoTextField];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(x + width + 10 + (50 + 20) * i, 320, 60, 50);
    [button setTitle:[titlrArray objectAtIndex:i + 4] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonClicked:)
     forControlEvents:UIControlEventTouchUpInside];
    button.tag = 1000 + i;
    [self.view addSubview:button];
    
    y = titleLabel.frame.origin.y + titleLabel.frame.size.height + 10;
  }
}

- (void)buttonClicked:(UIButton *)button {
  _userNameTextField = (UITextField *)[self.view viewWithTag:2000];
  _passwordTexttField = (UITextField *)[self.view viewWithTag:2001];
  if(button.tag == 1000) {
    if ([_userNameTextField.text isEqualToString:@"lije"] &&
          [_passwordTexttField.text isEqualToString:@"123"]) {
      [self postNotification];
    } else {
      return;
    }
  }
}

- (void)postNotification {
  NSDictionary *infoDict = @{@"loginInfo" : [NSString stringWithFormat:@"Hello%@",_userNameTextField.text]};
  
  [[NSNotificationCenter defaultCenter] postNotificationName:UPDATE_LOGIN_NOTIFICATION
                                                      object:self
                                                    userInfo:infoDict];
  [self dismissViewControllerAnimated:YES completion:nil];
}
@end

版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/lcchuguo/p/4829643.html