转自:http://blog.csdn.net/panjican/article/details/51332219
一般而言,在iOS中页面间传值,常见的方法有四种,
1 使用SharedApplication,定义一个变量来传递.
2 使用文件plist,或者NSUserdefault来传递
3 通过一个单例的class来传递
4 通过Delegate来传递。
我先学习一下第一种方法,下面为范例:
(1)AppDelegate.h
- #import <UIKit/UIKit.h>
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- @property (strong, nonatomic) UIWindow *window;
- @property (strong, nonatomic) NSString *dname;//定义dname传递帐号的值
- @property (strong, nonatomic) NSString *dpass;//定义dpass传递密码的值
- @end
AppDelegate.m
- #import "AppDelegate.h"
- #import "ViewController.h"
- @interface AppDelegate ()
- @end
- @implementation AppDelegate
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- //create the window
- self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
- self.window.backgroundColor = [UIColor whiteColor];
- self.window.rootViewController = [[ViewController alloc]init];
- [self.window makeKeyAndVisible];
- return YES;
- }
- @end
(2)ViewController.h
- #import <UIKit/UIKit.h>
- #import "AppDelegate.h"
- @interface ViewController : UIViewController
- @end
ViewController.m
- #import "ViewController.h"
- #import "NavViewController.h"
- UITextField* nameTextField;
- UITextField *passTextField;
- @interface ViewController ()
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- UILabel* nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 50, 50, 30)];
- nameLabel.text = @"账号";
- [self.view addSubview:nameLabel];
- UILabel* passLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 100, 50, 30)];
- passLabel.text = @"密码";
- [self.view addSubview:passLabel];
- nameTextField = [[UITextField alloc]initWithFrame:CGRectMake(100, 50, 150, 30)];
- nameTextField.borderStyle = UITextBorderStyleRoundedRect;
- [self.view addSubview:nameTextField];
- passTextField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 150, 30)];
- passTextField.borderStyle = UITextBorderStyleRoundedRect;
- [self.view addSubview:passTextField];
- UIButton* loginBtn = [UIButton buttonWithType:UIButtonTypeSystem];
- loginBtn.frame = CGRectMake(60, 180, 72, 30);
- [loginBtn setTitle:@"登陆" forState:UIControlStateNormal];
- [self.view addSubview:loginBtn];
- [loginBtn addTarget:self action:@selector(onLogin:) forControlEvents:UIControlEventTouchUpInside];
- }
- - (void) onLogin: (id) sender
- {
- AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
- appDelegate.dname = nameTextField.text; ;
- appDelegate.dpass = passTextField.text;
- NavViewController* navCtr = [[NavViewController alloc] init];
- [self presentViewController:navCtr animated:YES completion:nil];
- }
- @end
(3) NavViewController.h
- #import <UIKit/UIKit.h>
- #import "AppDelegate.h"
- @interface NavViewController : UIViewController
- @end
NavViewController.m
- #import "NavViewController.h"
- UILabel* welcomeLabel;
- @interface NavViewController ()
- @end
- @implementation NavViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
- UILabel* helloLabel = [[UILabel alloc]initWithFrame: CGRectMake(30, 50, 150, 30)];
- helloLabel.text = @"欢迎您,";
- [self.view addSubview:helloLabel];
- UILabel* passLabel = [[UILabel alloc]initWithFrame: CGRectMake(30, 100, 150, 30)];
- passLabel.text = @"您的密码是,";
- [self.view addSubview:passLabel];
- UILabel* welcomeLabel = [[UILabel alloc]initWithFrame:CGRectMake(85, 50, 120, 30)];
- welcomeLabel.text = appdelegate.dname;
- [self.view addSubview: welcomeLabel];
- UILabel* pwdLabel = [[UILabel alloc]initWithFrame:CGRectMake(120, 100, 120, 30)];
- pwdLabel.text = appdelegate.dpass;
- [self.view addSubview: pwdLabel];
- }
- @end
效果图如下:
相关推荐
注意,为了尊重用户隐私,iOS 13之后对剪贴板的使用进行了限制,需要在适当的时候请求用户权限。 4. **iCloud**: 对于大量数据的同步和共享,可以利用iCloud的云存储功能。每个用户在iCloud上都有自己的存储空间,...
iOS11 WKWebView 无法加载内容的解决方法 WKWebView 是 iOS 中的一个...WKWebView 无法加载内容的问题在 iOS 11 中可以通过使用 NSURLRequest 来解决,而 WKWebView 崩溃问题可以通过正确地实现 delegate 方法来解决。
* UIApplication:iOS 中的应用程序类,可以使用 sharedApplication: 方法来获取当前应用程序,setStatusBarHidden: 方法来隐藏状态栏,setStatusBarOrientation: 方法来设置状态栏的方向。 七、其它 * ...
- 使用`[[UIApplication sharedApplication] openURL:]`方法打开这个URL,iOS系统会自动识别并启动支付宝应用完成支付过程。 4. **回调处理**: - 支付完成后,支付宝会通过自定义URL Scheme返回结果给你的应用。...
在iOS中,我们可以利用`UIApplication`的`idleTimer`属性,这是一个定时器,当用户没有与屏幕进行交互(如触摸、键盘输入等)达到一定时间后,系统会认为应用处于空闲状态。默认情况下,当应用进入后台或屏幕关闭时...
在iOS中,如若需要使用第三方库的API,但其接口与项目现有接口不匹配,适配器模式可以帮助解决这种问题。 9. **建造者模式**:建造者模式用于分步骤创建复杂的对象,使得构建过程和表示分离。在iOS开发中,如MVC...
为了测试`Background Fetch`,你需要在Xcode中运行应用,并使用模拟器或真机进行调试。在设置中启用"开发者"模式,然后在"设置" -> 应用名 -> "Background App Refresh"中开启应用的后台刷新选项。在运行应用后,...
在iOS平台上,应用间交互是通过特定的机制实现的,其中一种常见且强大的方式就是使用URL Scheme。本文将深入探讨如何实现iOS应用间的相互跳转以及如何进行回调处理。 URL Scheme是一种自定义的协议,类似于HTTP或...
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert]; return YES; } - (void)...
在iOS平台上,Cocos2d-x是一个广泛使用的2D游戏开发框架,它允许开发者使用C++、Lua或者JavaScript进行编程。然而,为了提供更丰富的用户体验,游戏可能需要与设备的系统功能进行交互,比如访问用户的相册。在iOS中...
此外,还可以使用 Core Graphics 库对图片进行重绘和调整尺寸,进一步减小文件大小: ```swift func resizeAndCompressImage(_ image: UIImage, targetSize: CGSize, compressionQuality: CGFloat) -> Data? { let...
在iOS中,可以使用`UIApplication`类的`openURL`方法来启动拨号界面,这是最简单的方法之一。通过传递一个带有电话协议的URL,系统会自动打开拨号界面,用户确认后即可拨打电话。 ```objective-c // Objective-C ...
单例模式确保一个类在整个应用程序中只有一个实例,常用于资源管理,如UIApplication的sharedApplication。为了保证单例,需要控制类的构造方式,例如在Objective-C中重写`allocWithZone:`方法。单例模式简化了资源...
例如,`[UIApplication sharedApplication].openURL([NSURL URLWithString:@"yingshi://some-action"])]`会尝试启动萤石云应用并执行特定操作。 3. **安全与隐私** - iOS系统对应用间交互有严格的控制,从iOS 9...
UIResponder *currentFirstResponder = [UIApplication sharedApplication].keyWindow.firstResponder; if ([currentFirstResponder isKindOfClass:[UITextField class]] || [currentFirstResponder isKindOfClass...
在iOS开发中,实现双击Home键触发模糊效果涉及到多个技术点,主要涵盖App的生命周期管理、屏幕截图操作、UIBlurEffect(模糊效果)的使用以及如何获取Root ViewController或Key Window。下面将对这些关键知识点进行...
在iOS平台上开发游戏时,有时候会使用到Cocos2d-x框架,而为了实现更高效、更便捷的编程,开发者可能会选择使用Lua作为脚本语言。"cocos2d-lua整合到ios工程.zip"这个压缩包文件提供了一个将Cocos2d-lua集成到原生...
UIApplication的实例通常是一个全局单例,可以通过`[UIApplication sharedApplication]`获取。这个单例负责接收和分发用户事件,例如触摸屏幕、按键等,并将这些事件转发到适当的视图控制器或视图进行处理。 ...
不过,在实际应用中需要注意其局限性和潜在的问题,合理规划使用场景,确保既满足功能需求又不会对用户体验造成负面影响。 以上就是关于如何在iOS平台中实现应用程序之间相互检测是否安装的相关知识点介绍。希望对...
- 对于iOS 9.0之前的版本,可以使用`[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];`。 - 而对于iOS 9.0及以后的版本,推荐使用`- (BOOL)...