最終效果圖:

storyboard示意圖:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20140801/201408010846099.png" alt="\">
BeyondViewController.h
// // BeyondViewController.h // 18_控制器切換_navigation_push_通過storyboard方式 // // Created by beyond on 14-7-31. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import@interface BeyondViewController : UIViewController // NavigationItem左側的按鈕 @property (weak, nonatomic) IBOutlet UIBarButtonItem *refreshBtn; // NavigationItem右側的按鈕 @property (weak, nonatomic) IBOutlet UIBarButtonItem *wantToLoginBtn; // NavigationItem左側的按鈕 點擊事件 刷新至初始狀態 - (IBAction)refresh:(UIBarButtonItem *)sender; @end
BeyondViewController.m
//
// BeyondViewController.m
// 18_控制器切換_navigation_push_通過storyboard方式
//
// Created by beyond on 14-7-31.
// Copyright (c) 2014年 com.beyond. All rights reserved.
//
#import "BeyondViewController.h"
@interface BeyondViewController ()
@end
@implementation BeyondViewController
// 刷新至初始狀態
- (IBAction)refresh:(UIBarButtonItem *)sender
{
self.navigationItem.title = @"首頁";
self.wantToLoginBtn.enabled = YES;
self.refreshBtn.enabled = NO;
}
@end
LoginViewController.h
// // LoginViewController.h // 18_控制器切換_navigation_push_通過storyboard方式 // // Created by beyond on 14-7-31. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import@interface LoginViewController : UIViewController // 用戶名輸入框 @property (weak, nonatomic) IBOutlet UITextField *username; // 密碼輸入框 @property (weak, nonatomic) IBOutlet UITextField *password; // 輸入用戶名和密碼之後,點擊 登錄按鈕 - (IBAction)loginBtnClick:(UIButton *)sender; // NavigationItem左側的按鈕 點擊事件 返回前一個控制器 - (IBAction)backToHome:(UIBarButtonItem *)sender; @end
LoginViewController.m
//
// LoginViewController.m
// 18_控制器切換_navigation_push_通過storyboard方式
//
// Created by beyond on 14-7-31.
// Copyright (c) 2014年 com.beyond. All rights reserved.
//
#import "LoginViewController.h"
#import "NanaViewController.h"
@interface LoginViewController ()
@end
@implementation LoginViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_password.secureTextEntry = YES;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
#pragma mark - Navigation
// 在通過segue跳轉至下一個導航子控制器前,做准備工作!這兒是傳遞數據給目的控制器
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)username
{
// 要得到目的控制器,請使用 [segue destinationViewController].
// 在這裡,可以傳遞數據給下一個控制器
// 這個參數是要傳遞的數據
NSLog(@"prepare for segue----%@",username);
// 通過segue的destinationViewController得到即將要跳轉的目的控制器,傳遞數據給它
NanaViewController *nanaVC = [segue destinationViewController];
NSString *oldTitle = nanaVC.item_nanaSay.title;
nanaVC.username = username;
NSString *newStr = [NSString stringWithFormat:@"%@你好呀~%@ ",username,oldTitle];
nanaVC.item_nanaSay.title = newStr;
}
// 輸入用戶名和密碼之後,點擊 登錄按鈕
- (IBAction)loginBtnClick:(UIButton *)sender
{
// robust判斷
if (_username.text.length == 0 || _password.text.length == 0) {
UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:@"請輸入帳號和密碼" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"明白" otherButtonTitles:@"other", nil];
[sheet showInView:self.view];
[_username becomeFirstResponder];
return;
}
// 輸入正確的密碼和賬號之後,跳轉至第3個控制器
// self.navigationController pushViewController:<#(UIViewController *)#> animated:<#(BOOL)#>
// 通過segue連線,跳至self.navigationController容器裡面的下一個 子控制器,並且傳遞參數(用戶名),參數會被傳遞到self的 prepareForSegue方法中,然後才會傳遞到 下一下控制器(destination)
[self performSegueWithIdentifier:@"segue_loginSuccess" sender:_username.text];
}
// NavigationItem左側的按鈕 點擊事件 返回前一個控制器,即首頁
- (IBAction)backToHome:(UIBarButtonItem *)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
@end
NanaViewController.h
// // NanaViewController.h // 18_控制器切換_navigation_push_通過storyboard方式 // // Created by beyond on 14-7-31. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import@interface NanaViewController : UIViewController // NavigationItem右側的按鈕 歡迎 標語 @property (weak, nonatomic) IBOutlet UIBarButtonItem *item_nanaSay; // 點擊NavigationItem左側的按鈕 回到首頁,即第一個控制器,並且將數據帶過去 - (IBAction)backToHome:(UIBarButtonItem *)sender; // 僅用來接收傳遞過來的數據用~ @property (nonatomic,copy) NSString * username; @end
NanaViewController.m
//
// NanaViewController.m
// 18_控制器切換_navigation_push_通過storyboard方式
//
// Created by beyond on 14-7-31.
// Copyright (c) 2014年 com.beyond. All rights reserved.
//
#import "NanaViewController.h"
#import "BeyondViewController.h"
@interface NanaViewController ()
@end
@implementation NanaViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
// 回到首頁,即第一個控制器,並且將數據帶過去
- (IBAction)backToHome:(UIBarButtonItem *)sender {
// 拿到第一個控制器
BeyondViewController *firstVC = [self.navigationController.viewControllers firstObject];
// [self.navigationController.viewControllers objectAtIndex:n-2]; //n為最頂的index
//加入要傳遞的數據
NSString *str = [NSString stringWithFormat:@"歡迎%@回來",_username];
firstVC.navigationItem.title = str;
firstVC.wantToLoginBtn.enabled = NO;
firstVC.refreshBtn.enabled = YES;
// pop至第一個控制器
[self.navigationController popToViewController:firstVC animated:YES];
}
@end