1 //
2 // TWFXSecondViewController.m
3 // DemoMultiView
4 //
5 // Created by Lion User on 12-12-24.
6 // Copyright (c) 2012年 Lion User. All rights reserved.
7 //
8
9 #import "TWFXSecondViewController.h"
10 #import "TWFXThirdViewController.h"
11
12 @interface TWFXSecondViewController ()
13
14 @end
15
16 @implementation TWFXSecondViewController
17 @synthesize thirdViewController;
18
19
20 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
21 {
22 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
23 if (self) {
24 // Custom initialization
25 }
26 return self;
27 }
28
29 - (void)viewDidLoad
30 {
31 [super viewDidLoad];
32 // Do any additional setup after loading the view from its nib.
33 }
34
35 - (void)didReceiveMemoryWarning
36 {
37 [super didReceiveMemoryWarning];
38 // Dispose of any resources that can be recreated.
39 }
40
41
42
43 /*
44 多视图切换,如果是从A视图跳转到B视图,那么A表示当前视图,B表示将要跳转到视图
45 多视图跳转可以理解为有两部分:从A跳到B, B 返回 A.注意,是返回,不是重新发起跳转
46 这里是第二阶段:从B返回A
47
48 self.presentingViewController 在跳转发生后有效,表示B试图的上一个视图,在这里为A视图
49 self.presentedViewController 在跳转发生后有效,表示B视图的下一个视图,在这里为nil,以为并没有发生跳转
50 self.parentViewController表示B的父试图,也为nil
51 */
52 -(IBAction)btnClicGoBack:(UIButton *)sender{
53
54
55 void(^task)() = ^{
56
57 NSLog(@"2self: %@",self);
58 NSLog(@"2back ed%@",self.presentedViewController);
59 NSLog(@"2back ing%@",self.presentingViewController);
60 // NSLog(@"back par%@",self.parentViewController);
61 printf("\n\n");
62
63 };
64
65 // task();
66
67 //跳转完成后调用completion,此时,当前视图已被销毁,self.presentedViewController self.presentingViewController都为nil
68 [self dismissViewControllerAnimated:YES completion:nil];
69
70 task();//此时,当前视图还没被销毁,self.presentingViewController 表示上一个视图
71
72 }
73
74 - (IBAction)btnClickTraToFirst:(UIButton *)sender {
75 }
76
77
78 /*
79 这里表示从B视图跳到C视图
80 */
81 - (IBAction)btnClickTra:(UIButton *)sender {
82
83 if (self.thirdViewController == nil) {
84
85 /*
86 最常用的初始化方法
87 nibName 表示xib文件的名字,不包括扩展名
88 nibBundle 制定在那个文件束中搜索制定的nib文件,如在主目录下,则可以直接用nil
89 */
90 self.thirdViewController = [[[TWFXThirdViewController alloc] initWithNibName:@"TWFXThirdViewController" bundle:nil]autorelease] ;
91
92 }
93
94 //视图切换的动画效果
95 self.thirdViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
96
97 void(^task)() = ^{
98
99 NSLog(@"2self: %@",self);
100 NSLog(@"2go ed%@",self.presentedViewController);
101 NSLog(@"2go ing%@",self.presentingViewController);
102 // NSLog(@"go par%@",self.parentViewController);
103 printf("\n\n");
104 };
105 // task = ^(){};
106
107 // task();//跳转前没意义
108
109
110 /*
111 completion是一个回调,当 当前视图(这里是TWFXViewController) 的viewDidDisear调用后,该回调被调用
112 self.presentingViewController(表示上一个视图)为A视图
113 self.presentedViewController(表示下一个试图)为C视图
114 */
115 [self presentViewController:thirdViewController animated:YES completion:task];
116
117
118 }
119
120
121 @end