iOSm界面跳转和参数传递之presentViewController与dismissViewControllerAnimated
2017-04-25 10:18
429 查看
假设
界面1为 ViewController01 : UIViewController 界面2为 ViewController02 : UIViewController
其中界面1为项目的rootViewController.
AppDelegate.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSString* localImagePath;
@end
AppDelegate.m的部分代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
ViewController01* mViewController01 = [[ViewController01 alloc]init];
self.window.rootViewController = mViewController01;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ViewController01.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface ViewController01 : UIViewController
@property (strong,nonatomic) NSMutableDictionary* parameter;
@end
ViewController01.m代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import "ViewController01.h"
#import "MyViewTool.h"
#import "ViewController02.h"
@interface ViewController01 ()
@end
@implementation ViewController01
- (void)viewDidLoad {
NSLog(@"viewDidLoad():视图1");
[super viewDidLoad];
// Do any additional setup after loading the view.
[self initViews];
[self initParameter];
}
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear():视图1");
[super viewDidAppear:animated];
//接收到的参数
NSLog(@"viewDidAppear():视图1,收到的参数:from=%@",[self.parameter objectForKey:@"from"]);
}
- (void)initViews{
CGSize size = [MyViewTool loadScreenSize];
CGFloat width = size.width;
UILabel* label = [MyViewTool createLabel:CGRectMake(10, 40, width-20, 100) withText:@"视图1" withBgcolor:[UIColor yellowColor]];
UIButton* btn = [MyViewTool createButton:CGRectMake(label.frame.origin.x, label.frame.origin.y+label.frame.size.height+20, 200, 50) withDelegate:self withAction:@selector(buttonClick:) withTitle:@"按钮1:点击打开视图2"
withBgColor:[UIColor lightGrayColor]];
btn.center = CGPointMake(width/2, btn.center.y);
[self.view addSubview:label];
[self.view addSubview:btn];
}
#pragma mark 初始化要传递的参数
- (void)initParameter{
self.parameter = [[NSMutableDictionary alloc]init];
}
-(void)buttonClick : (UIButton*) sender {
NSLog(@"buttonClick:%@",sender.titleLabel.text);
//设置传递参数的数据
[self.parameter setObject:@"我是视图1设置的参数" forKey:@"from"];
//打开 ViewController02
ViewController02* mViewController02 = [[ViewController02 alloc]init];
mViewController02.parameter=self.parameter;
[self presentViewController:mViewController02 animated:YES completion:^{
NSLog(@"presentViewController成功");
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
ViewController02.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface ViewController02 : UIViewController
@property (strong,nonatomic) NSMutableDictionary* parameter;
@end
ViewController02.m代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import "ViewController02.h"
#import "MyViewTool.h"
@interface ViewController02 ()
@end
@implementation ViewController02
- (void)viewDidLoad {
NSLog(@"viewDidLoad():视图2");
[super viewDidLoad];
// Do any additional setup after loading the view.
[self initViews];
}
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear():视图2");
[super viewDidAppear:animated];
//接收到的参数
NSLog(@"viewDidAppear():视图2,收到的参数:from=%@",[self.parameter objectForKey:@"from"]);
}
- (void)initViews{
CGSize size = [MyViewTool loadScreenSize];
CGFloat width = size.width;
UILabel* label = [MyViewTool createLabel:CGRectMake(10, 40, width-20, 100) withText:@"视图2" withBgcolor:[UIColor yellowColor]];
UIButton* btn = [MyViewTool createButton:CGRectMake(label.frame.origin.x, label.frame.origin.y+label.frame.size.height+20, 200, 50) withDelegate:self withAction:@selector(buttonClick:) withTitle:@"按钮2:点击返回视图1" withBgColor:[UIColor lightGrayColor]];
btn.center = CGPointMake(width/2, btn.center.y);
[self.view addSubview:label];
[self.view addSubview:btn];
}
-(void)buttonClick : (UIButton*) sender {
NSLog(@"buttonClick:%@",sender.titleLabel.text);
//设置返回给视图1的参数
[self.parameter setObject:@"我是视图2设置的参数" forKey:@"from"];
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"dismissViewControllerAnimated成功");
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
项目源代码参见附近中的demo010.zip
界面1为 ViewController01 : UIViewController 界面2为 ViewController02 : UIViewController
其中界面1为项目的rootViewController.
AppDelegate.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSString* localImagePath;
@end
AppDelegate.m的部分代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
ViewController01* mViewController01 = [[ViewController01 alloc]init];
self.window.rootViewController = mViewController01;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ViewController01.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface ViewController01 : UIViewController
@property (strong,nonatomic) NSMutableDictionary* parameter;
@end
ViewController01.m代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import "ViewController01.h"
#import "MyViewTool.h"
#import "ViewController02.h"
@interface ViewController01 ()
@end
@implementation ViewController01
- (void)viewDidLoad {
NSLog(@"viewDidLoad():视图1");
[super viewDidLoad];
// Do any additional setup after loading the view.
[self initViews];
[self initParameter];
}
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear():视图1");
[super viewDidAppear:animated];
//接收到的参数
NSLog(@"viewDidAppear():视图1,收到的参数:from=%@",[self.parameter objectForKey:@"from"]);
}
- (void)initViews{
CGSize size = [MyViewTool loadScreenSize];
CGFloat width = size.width;
UILabel* label = [MyViewTool createLabel:CGRectMake(10, 40, width-20, 100) withText:@"视图1" withBgcolor:[UIColor yellowColor]];
UIButton* btn = [MyViewTool createButton:CGRectMake(label.frame.origin.x, label.frame.origin.y+label.frame.size.height+20, 200, 50) withDelegate:self withAction:@selector(buttonClick:) withTitle:@"按钮1:点击打开视图2"
withBgColor:[UIColor lightGrayColor]];
btn.center = CGPointMake(width/2, btn.center.y);
[self.view addSubview:label];
[self.view addSubview:btn];
}
#pragma mark 初始化要传递的参数
- (void)initParameter{
self.parameter = [[NSMutableDictionary alloc]init];
}
-(void)buttonClick : (UIButton*) sender {
NSLog(@"buttonClick:%@",sender.titleLabel.text);
//设置传递参数的数据
[self.parameter setObject:@"我是视图1设置的参数" forKey:@"from"];
//打开 ViewController02
ViewController02* mViewController02 = [[ViewController02 alloc]init];
mViewController02.parameter=self.parameter;
[self presentViewController:mViewController02 animated:YES completion:^{
NSLog(@"presentViewController成功");
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
ViewController02.h代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import <UIKit/UIKit.h>
@interface ViewController02 : UIViewController
@property (strong,nonatomic) NSMutableDictionary* parameter;
@end
ViewController02.m代码
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f5169f5241a40854814908d8bce9d454.png)
#import "ViewController02.h"
#import "MyViewTool.h"
@interface ViewController02 ()
@end
@implementation ViewController02
- (void)viewDidLoad {
NSLog(@"viewDidLoad():视图2");
[super viewDidLoad];
// Do any additional setup after loading the view.
[self initViews];
}
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear():视图2");
[super viewDidAppear:animated];
//接收到的参数
NSLog(@"viewDidAppear():视图2,收到的参数:from=%@",[self.parameter objectForKey:@"from"]);
}
- (void)initViews{
CGSize size = [MyViewTool loadScreenSize];
CGFloat width = size.width;
UILabel* label = [MyViewTool createLabel:CGRectMake(10, 40, width-20, 100) withText:@"视图2" withBgcolor:[UIColor yellowColor]];
UIButton* btn = [MyViewTool createButton:CGRectMake(label.frame.origin.x, label.frame.origin.y+label.frame.size.height+20, 200, 50) withDelegate:self withAction:@selector(buttonClick:) withTitle:@"按钮2:点击返回视图1" withBgColor:[UIColor lightGrayColor]];
btn.center = CGPointMake(width/2, btn.center.y);
[self.view addSubview:label];
[self.view addSubview:btn];
}
-(void)buttonClick : (UIButton*) sender {
NSLog(@"buttonClick:%@",sender.titleLabel.text);
//设置返回给视图1的参数
[self.parameter setObject:@"我是视图2设置的参数" forKey:@"from"];
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"dismissViewControllerAnimated成功");
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
项目源代码参见附近中的demo010.zip
相关文章推荐
- [ios]使用self.view.window.rootViewController presentViewControllert跳转后的返回
- ios中使用PresentModalViewController和dismissModalViewControllerAnimated的总结
- iOS 【iOS-PresentViewController切换界面 Modal】
- iOS 【iOS ViewController的跳转形式 Present ViewController Modally】
- ios不响应presentModalViewController界面的处理
- presentModalViewControllerAnimated 和 dismissModalViewControllerAnimated
- iOS-多级presentViewController直接返回一级界面
- presentModalViewControllerAnimated 和 dismissModalViewControllerAnimated
- iOS开发 presentModalViewController ,dismiss 与 push ,pop
- IOS开发~灵活使用 dismissViewControllerAnimated / dismissModalViewControllerAnimated
- iOS之ViewController的多层presentViewController的dismiss问题
- presentModalViewController 和 dismissModalViewControllerAnimated
- 界面跳转之presentViewController、pushViewController
- [ios]presentModalViewController和dismissModalViewControllerAnimated汇总
- pushViewController, popViewController, presentViewController, dismissViewController---关于视图跳转的总结
- IOS dismissViewControllerAnimated 传值
- IOS——使用PresentViewController推送页面,各页面间跳转及遇到的问题
- 界面代码ios不响应presentModalViewController界面的处理
- ios不响应presentModalViewController界面的处理
- iOS ViewController跳转界面的几种方法简单总结