iOS 界面传值实现的6种方式
几种常见的页面传值方式:
- 属性传值
- 单例传值
- NSUserDefaults传值
- 代理传值
- block传值
- 通知传值
一、属性传值
实现A与B界面传值,需要新建两个UIViewController , A --> ViewController ; b --> BUIViewController
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
考虑使用导航条作为跳转机制,在 AppDelegate 中添加 UINavigationController
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//创建导航控制器
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController: [[ViewController alloc]init]];
//设置window的根控制器
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
}
为实现A-->B 属性传值,需要在B中添加属性。然后在跳转钱给B中的属性赋值,在B中获取自己的属性值就OK了。
//
// BViewController.h
// 界面传值Demo
//
#import <UIKit/UIKit.h>
@interface BViewController : UIViewController
/** 属性传值参数 */
@property(nonatomic, strong)NSString *BValue;
@end
在B中获取属性值关键代码。
//属性传值 :读取属性值显示在text filed中
_textField.text = self.BValue;
NSLog(@"%@ -- %@",[self class],self.BValue);
A中在,给跳转的控制器中的属性赋值关键代码。
BViewController *BVC = [[BViewController alloc]init];
// 属性传值给B
NSString *textfieldStr = self.textField.text;
// BVC.BValue = @"属性传值:A --> B";
BVC.BValue = textfieldStr;
[self.navigationController pushViewController:BVC animated:YES];
效果么,很简单的的东西。B中简单的打印下 log 如下。
<2018-03-16 10:09:33> [Info][