`

[IOS](转)使用SharedApplication进行传值

    博客分类:
  • IOS
阅读更多

转自:http://blog.csdn.net/panjican/article/details/51332219 

 

一般而言,在iOS中页面间传值,常见的方法有四种,

    使用SharedApplication,定义一个变量来传递.

   2 使用文件plist,或者NSUserdefault来传递

   3 通过一个单例的class来传递

   4 通过Delegate来传递。

     我先学习一下第一种方法,下面为范例:

(1)AppDelegate.h

 

[objc] view plain copy
 
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  4.   
  5. @property (strongnonatomicUIWindow *window;  
  6. @property (strongnonatomicNSString *dname;//定义dname传递帐号的值  
  7. @property (strongnonatomicNSString *dpass;//定义dpass传递密码的值  
  8.   
  9. @end  


    AppDelegate.m

 

 

[objc] view plain copy
 
  1. #import "AppDelegate.h"  
  2. #import "ViewController.h"  
  3.   
  4. @interface AppDelegate ()  
  5.   
  6. @end  
  7.   
  8. @implementation AppDelegate  
  9.   
  10.   
  11. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  12.   
  13.     //create the window  
  14.     self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];  
  15.     self.window.backgroundColor = [UIColor whiteColor];  
  16.     self.window.rootViewController = [[ViewController alloc]init];  
  17.     [self.window makeKeyAndVisible];   
  18.     return YES;  
  19. }  
  20.   
  21. @end  



 

(2)ViewController.h

 

[objc] view plain copy
 
  1. #import <UIKit/UIKit.h>  
  2. #import "AppDelegate.h"  
  3.   
  4. @interface ViewController : UIViewController  
  5.   
  6.   
  7. @end  


  ViewController.m

 

 

[objc] view plain copy
 
  1. #import "ViewController.h"  
  2. #import "NavViewController.h"  
  3.   
  4. UITextField* nameTextField;  
  5. UITextField *passTextField;  
  6. @interface ViewController ()  
  7.   
  8. @end  
  9.   
  10. @implementation ViewController  
  11.   
  12. - (void)viewDidLoad {  
  13.     [super viewDidLoad];  
  14.     UILabel* nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(30505030)];  
  15.     nameLabel.text = @"账号";  
  16.     [self.view addSubview:nameLabel];  
  17.       
  18.     UILabel* passLabel = [[UILabel alloc]initWithFrame:CGRectMake(301005030)];  
  19.     passLabel.text = @"密码";  
  20.     [self.view addSubview:passLabel];  
  21.       
  22.     nameTextField = [[UITextField alloc]initWithFrame:CGRectMake(1005015030)];  
  23.     nameTextField.borderStyle = UITextBorderStyleRoundedRect;  
  24.     [self.view addSubview:nameTextField];  
  25.       
  26.     passTextField =  [[UITextField alloc]initWithFrame:CGRectMake(10010015030)];  
  27.     passTextField.borderStyle = UITextBorderStyleRoundedRect;  
  28.     [self.view addSubview:passTextField];  
  29.       
  30.     UIButton* loginBtn = [UIButton buttonWithType:UIButtonTypeSystem];  
  31.     loginBtn.frame = CGRectMake(601807230);  
  32.     [loginBtn setTitle:@"登陆" forState:UIControlStateNormal];  
  33.     [self.view addSubview:loginBtn];  
  34.     [loginBtn addTarget:self action:@selector(onLogin:) forControlEvents:UIControlEventTouchUpInside];  
  35.       
  36.       
  37. }  
  38.   
  39. - (void) onLogin: (id) sender  
  40. {  
  41.     AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];  
  42.     appDelegate.dname = nameTextField.text; ;  
  43.     appDelegate.dpass = passTextField.text;  
  44.         NavViewController* navCtr = [[NavViewController alloc] init];  
  45.         [self presentViewController:navCtr animated:YES completion:nil];     
  46. }  
  47.   
  48. @end  


(3) NavViewController.h

 

 

[objc] view plain copy
 
  1. #import <UIKit/UIKit.h>  
  2. #import "AppDelegate.h"  
  3.   
  4. @interface NavViewController : UIViewController  
  5.   
  6. @end  


  NavViewController.m

 

 

[objc] view plain copy
 
  1. #import "NavViewController.h"  
  2. UILabel* welcomeLabel;  
  3. @interface NavViewController ()  
  4.   
  5. @end  
  6.   
  7. @implementation NavViewController  
  8.   
  9. - (void)viewDidLoad {  
  10.     [super viewDidLoad];  
  11.     AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];  
  12.     UILabel* helloLabel = [[UILabel alloc]initWithFrame: CGRectMake(305015030)];  
  13.     helloLabel.text = @"欢迎您,";  
  14.     [self.view addSubview:helloLabel];  
  15.       
  16.       
  17.       
  18.     UILabel* passLabel = [[UILabel alloc]initWithFrame: CGRectMake(3010015030)];  
  19.     passLabel.text = @"您的密码是,";  
  20.     [self.view addSubview:passLabel];  
  21.       
  22.     UILabel* welcomeLabel = [[UILabel alloc]initWithFrame:CGRectMake(855012030)];  
  23.     welcomeLabel.text = appdelegate.dname;  
  24.     [self.view addSubview: welcomeLabel];  
  25.       
  26.       
  27.     UILabel* pwdLabel = [[UILabel alloc]initWithFrame:CGRectMake(12010012030)];  
  28.     pwdLabel.text = appdelegate.dpass;  
  29.     [self.view addSubview: pwdLabel];  
  30.       
  31. }  
  32.   
  33.   
  34.   
  35. @end  

 

效果图如下:

  

 

 

分享到:
评论

相关推荐

    iOS俩个app传值

    注意,为了尊重用户隐私,iOS 13之后对剪贴板的使用进行了限制,需要在适当的时候请求用户权限。 4. **iCloud**: 对于大量数据的同步和共享,可以利用iCloud的云存储功能。每个用户在iCloud上都有自己的存储空间,...

    iOS11 WKWebView 无法加载内容的解决方法

    iOS11 WKWebView 无法加载内容的解决方法 WKWebView 是 iOS 中的一个...WKWebView 无法加载内容的问题在 iOS 11 中可以通过使用 NSURLRequest 来解决,而 WKWebView 崩溃问题可以通过正确地实现 delegate 方法来解决。

    苹果ios开发一年的工作笔记.pdf

    * UIApplication:iOS 中的应用程序类,可以使用 sharedApplication: 方法来获取当前应用程序,setStatusBarHidden: 方法来隐藏状态栏,setStatusBarOrientation: 方法来设置状态栏的方向。 七、其它 * ...

    ios支付宝支付demo

    - 使用`[[UIApplication sharedApplication] openURL:]`方法打开这个URL,iOS系统会自动识别并启动支付宝应用完成支付过程。 4. **回调处理**: - 支付完成后,支付宝会通过自定义URL Scheme返回结果给你的应用。...

    iOS无操作退出登录

    在iOS中,我们可以利用`UIApplication`的`idleTimer`属性,这是一个定时器,当用户没有与屏幕进行交互(如触摸、键盘输入等)达到一定时间后,系统会认为应用处于空闲状态。默认情况下,当应用进入后台或屏幕关闭时...

    iOS 设计模式及源码实现

    在iOS中,如若需要使用第三方库的API,但其接口与项目现有接口不匹配,适配器模式可以帮助解决这种问题。 9. **建造者模式**:建造者模式用于分步骤创建复杂的对象,使得构建过程和表示分离。在iOS开发中,如MVC...

    delphi ios后台运行BackgroundFetchDemo

    为了测试`Background Fetch`,你需要在Xcode中运行应用,并使用模拟器或真机进行调试。在设置中启用"开发者"模式,然后在"设置" -&gt; 应用名 -&gt; "Background App Refresh"中开启应用的后台刷新选项。在运行应用后,...

    iOS两个app之间的相互跳转,并带有回调处理

    在iOS平台上,应用间交互是通过特定的机制实现的,其中一种常见且强大的方式就是使用URL Scheme。本文将深入探讨如何实现iOS应用间的相互跳转以及如何进行回调处理。 URL Scheme是一种自定义的协议,类似于HTTP或...

    IOS推送消息docx文档

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert]; return YES; } - (void)...

    IOS下cocos2d-x访问系统相册

    在iOS平台上,Cocos2d-x是一个广泛使用的2D游戏开发框架,它允许开发者使用C++、Lua或者JavaScript进行编程。然而,为了提供更丰富的用户体验,游戏可能需要与设备的系统功能进行交互,比如访问用户的相册。在iOS中...

    IOS截屏、拍照、缩减图片大小

    此外,还可以使用 Core Graphics 库对图片进行重绘和调整尺寸,进一步减小文件大小: ```swift func resizeAndCompressImage(_ image: UIImage, targetSize: CGSize, compressionQuality: CGFloat) -&gt; Data? { let...

    iOS拨打电话(三种方法)

    在iOS中,可以使用`UIApplication`类的`openURL`方法来启动拨号界面,这是最简单的方法之一。通过传递一个带有电话协议的URL,系统会自动打开拨号界面,用户确认后即可拨打电话。 ```objective-c // Objective-C ...

    iOS开发中的几种设计模式介绍

    单例模式确保一个类在整个应用程序中只有一个实例,常用于资源管理,如UIApplication的sharedApplication。为了保证单例,需要控制类的构造方式,例如在Objective-C中重写`allocWithZone:`方法。单例模式简化了资源...

    ios app调用第三方app

    例如,`[UIApplication sharedApplication].openURL([NSURL URLWithString:@"yingshi://some-action"])]`会尝试启动萤石云应用并执行特定操作。 3. **安全与隐私** - iOS系统对应用间交互有严格的控制,从iOS 9...

    ios自定义键盘附件关闭键盘

    UIResponder *currentFirstResponder = [UIApplication sharedApplication].keyWindow.firstResponder; if ([currentFirstResponder isKindOfClass:[UITextField class]] || [currentFirstResponder isKindOfClass...

    iOS - Object - C 双击HOME 实现模糊效果

    在iOS开发中,实现双击Home键触发模糊效果涉及到多个技术点,主要涵盖App的生命周期管理、屏幕截图操作、UIBlurEffect(模糊效果)的使用以及如何获取Root ViewController或Key Window。下面将对这些关键知识点进行...

    cocos2d-lua整合到ios工程.zip

    在iOS平台上开发游戏时,有时候会使用到Cocos2d-x框架,而为了实现更高效、更便捷的编程,开发者可能会选择使用Lua作为脚本语言。"cocos2d-lua整合到ios工程.zip"这个压缩包文件提供了一个将Cocos2d-lua集成到原生...

    总结最近ios开发心得

    UIApplication的实例通常是一个全局单例,可以通过`[UIApplication sharedApplication]`获取。这个单例负责接收和分发用户事件,例如触摸屏幕、按键等,并将这些事件转发到适当的视图控制器或视图进行处理。 ...

    ios判断App是否安装.

    不过,在实际应用中需要注意其局限性和潜在的问题,合理规划使用场景,确保既满足功能需求又不会对用户体验造成负面影响。 以上就是关于如何在iOS平台中实现应用程序之间相互检测是否安装的相关知识点介绍。希望对...

    iOS状态栏、导航栏的一些笔记分享

    - 对于iOS 9.0之前的版本,可以使用`[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];`。 - 而对于iOS 9.0及以后的版本,推荐使用`- (BOOL)...

Global site tag (gtag.js) - Google Analytics