iOS常见的传值方式
来源:互联网 发布:usb网络通道 编辑:程序博客网 时间:2024/06/05 15:21
(一)属性传值
一般用于将第一个界面的值传到第二个界面,不可从第二个界面向第一个界面传值
第一个界面代码:
#import "ViewController.h"
#import "DetailViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UITextField *textNstring;//创建一个属性
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorbrownColor];
_textNstring = [[UITextFieldalloc]initWithFrame:CGRectMake(150,100,80, 20)];
_textNstring.text =@"123456";
[self.viewaddSubview:self.textNstring];
//创建一个按钮,应用其点击事件,进行传值和转页
UIButton *button = [[UIButtonalloc]initWithFrame:CGRectMake(50,100,100,20)];
[button setTitle:@"属性传值"forState:UIControlStateNormal];
[button addTarget:selfaction:@selector(click)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:button];
}
//按钮的点击事件
- (void)click{
DetailViewController *dvc = [[DetailViewControlleralloc]init];
//属性传值
dvc.string =self.textNstring.text;
//跳转页面
[selfshowViewController:dvcsender:nil];
}
#import <UIKit/UIKit.h>
@interface DetailViewController :UIViewController
@property(nonatomic,strong)NSString *string;
@property(nonatomic,strong)UILabel *NSlable;
@end
.m文件
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColoryellowColor];
_NSlable = [[UILabelalloc]initWithFrame:CGRectMake(100,100,100, 30)];
_NSlable.textColor = [UIColorblackColor];
_NSlable.backgroundColor = [UIColorwhiteColor];
_NSlable.text =_string;
[self.viewaddSubview:self.NSlable];
}
(二)Block传值
一般用于将第二个界面的值,返回给上一个界面
第一个界面代码:
#import "ViewController.h"
#import "DetailViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UITextField *textNstring;//创建一个属性
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor brownColor];
_textNstring = [[UITextField alloc]initWithFrame:CGRectMake(150, 100, 80, 20)];
_textNstring.text = @"123456";
[self.view addSubview:self.textNstring];
//创建一个按钮,应用其点击事件,进行传值和转页
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 100, 20)];
[button setTitle:@"Block传值" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//按钮的点击事件
- (void)click{
DetailViewController *dvc = [[DetailViewController alloc]init];
//Block传值
__weaktypeof(self) weakSelf =self;
dvc.block = ^(UILabel *lable){
weakSelf.textNstring.text = lable.text;
};
//跳转页面
[self.navigationControllerpushViewController:dvcanimated:YES];
}
#import <UIKit/UIKit.h>
typedef void (^Block)(UILabel *);
@interface DetailViewController :UIViewController
@property(nonatomic,copy)Block block;
@property(nonatomic,strong)UILabel *NSlable;
@end
.m文件
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor yellowColor];
_NSlable = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30)];
_NSlable.textColor = [UIColor blackColor];
_NSlable.backgroundColor = [UIColor whiteColor];
[self.view addSubview:self.NSlable];
self.NSlable.text = @"789456";
self.block(_NSlable);
UIButton *button = [[UIButtonalloc]initWithFrame:CGRectMake(100,80,100, 30)];
button.backgroundColor = [UIColorredColor];
[button addTarget:self action:@selector(click)
forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:button];
}
- (void)click{
[self.navigationControllerpopViewControllerAnimated:YES];//返回上一页
}
(三)代理传值(协议传值)
第一个界面代码:
.h文件
@property(nonatomic,strong)UITextField *textNstring;//创建一个属性
.m文件
#import "ViewController.h"
#import "DetailViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor brownColor];
_textNstring = [[UITextField alloc]initWithFrame:CGRectMake(150, 100, 80, 20)];
_textNstring.text = @"123456";
[self.view addSubview:self.textNstring];
//创建一个按钮,应用其点击事件,进行传值和转页
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 100, 20)];
[button setTitle:@"代理传值" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//按钮的点击事件
- (void)click{
DetailViewController *dvc = [[DetailViewController alloc]init];
dvc.delegate =self;
//跳转页面
[self.navigationController pushViewController:dvc animated:YES];
}
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController
@property(nonatomic,strong)ViewController *delegate;
@property(nonatomic,strong)UILabel *NSlable;
@end
.m文件
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor yellowColor];
_NSlable = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30)];
_NSlable.textColor = [UIColor blackColor];
_NSlable.backgroundColor = [UIColor whiteColor];
[self.view addSubview:self.NSlable];
self.NSlable.text = @"789456";
self.block(_NSlable);
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 80, 100, 30)];
button.backgroundColor = [UIColor redColor];
[button addTarget:self action:@selector(click)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)click{
self.delegate.textNstring.text = self.NSlable.text ;
[self.navigationController popViewControllerAnimated:YES];//返回上一页
}
(四)单例传值
任何页面都可以调用,贯穿整个应用程序,我用的一个动画效果的单例为例子。
#import <UIKit/UIKit.h>
@interface AnimationView: UIView
+ (void)startAnimation;
+ (void)stopAnimation;
@end
#import "AnimationView.h"
@interface AnimationView ()
@property(nonnull,nonatomic,strong)UIImageView *imanageView;
@end
@implementation AnimationView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [superinitWithFrame:frame];
if (self) {
[selfsetInterfaceAnimation];
}
returnself;
}
- (void)setInterfaceAnimation{
_imanageView = [[UIImageViewalloc]initWithFrame:CGRectMake(self.bounds.size.width / 2 - 125,self.bounds.size.height /2 - 50,250,80)];
_imanageView.alpha =0.5;
[selfaddSubview:_imanageView];
//图片帧动画
NSArray * array =@[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16"];//图片名
NSMutableArray *imanges = [NSMutableArrayarray];
for (NSString *namein array ) {
[imanges addObject:[UIImageimageNamed:name]];//分别添加每一个名字对应的image
}
_imanageView.animationImages = imanges;//放入多张图片
_imanageView.animationDuration =1;//转化延迟时间
_imanageView.animationRepeatCount = -1;//不结束
[[UIApplicationsharedApplication].keyWindowaddSubview:self.imanageView];
}
+ (void)startAnimation{
[_imanageViewstartAnimating];
}
+ (void)stopAnimation{
[_imanageViewstopAnimating];
[_imanageViewremoveFromSuperview];
}
#import "AnimationView.h"
@property(nonatomic,strong)AnimationView *AnimationVC;
//离开界面的时候调用单例中的stopAnimation方法
- (void)viewDidDisappear:(BOOL)animated{
[_AnimationVCstopAnimation];
}
//载入时调用单例中的startAnimation方法
- (void)viewDidLoad {
[superviewDidLoad];
self.AnimationVC = [[AnimationViewalloc]initWithFrame:self.view.bounds];
[self.AnimationVCstartAnimation];
}
(五)通知传值
第一个界面代码:
#import "ViewController.h"
#import "DetailViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UITextField *textNstring;//创建一个属性
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor brownColor];
_textNstring = [[UITextField alloc]initWithFrame:CGRectMake(150, 100, 80, 20)];
_textNstring.text = @"123456";
[self.view addSubview:self.textNstring];
//创建一个按钮,应用其点击事件,进行传值和转页
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 100, 20)];
[button setTitle:@"通知传值" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//按钮的点击事件
- (void)click{
//注册通知
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(action_Notification:)name:@"DailiyRecommendNoti"object:nil];
DetailViewController *dvc = [[DetailViewController alloc]init];
//跳转页面
[self.navigationControllerpushViewController:dvc animated:YES];
}
//通知传值,获得值
- (void)action_Notification:(NSNotification *)sender{
_textNstring.text = sender.object;
}
//释放通知
- (void)dealloc{
[[NSNotificationCenterdefaultCenter ]removeObserver:self];
}
#import <UIKit/UIKit.h>
@interface DetailViewController :UIViewController
@property(nonatomic,strong)UILabel *NSlable;
@end
.m文件
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor yellowColor];
_NSlable = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30)];
_NSlable.textColor = [UIColor blackColor];
_NSlable.backgroundColor = [UIColor whiteColor];
[self.view addSubview:self.NSlable];
self.NSlable.text = @"789456";
UIButton *button = [[UIButtonalloc]initWithFrame:CGRectMake(100,80, 100, 30)];
button.backgroundColor = [UIColorredColor];
[button addTarget:self action:@selector(click)
forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:button];
}
- (void)click{
[[NSNotificationCenterdefaultCenter] postNotificationName:@"DailiyRecommendNoti"object:_NSlable.text];
[self.navigationControllerpopViewControllerAnimated:YES];//返回上一页
}
(六)方法传值
第一个界面代码:
#import "ViewController.h"
#import "DetailViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UITextField *textNstring;//创建一个属性
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorbrownColor];
_textNstring = [[UITextFieldalloc]initWithFrame:CGRectMake(150,100, 80, 20)];
_textNstring.text =@"123456";
[self.viewaddSubview:self.textNstring];
//创建一个按钮,应用其点击事件,进行传值和转页
UIButton *button = [[UIButtonalloc]initWithFrame:CGRectMake(50,100, 100,20)];
[button setTitle:@"方法传值"forState:UIControlStateNormal];
[button addTarget:selfaction:@selector(click)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:button];
}
//按钮的点击事件
- (void)click{
DetailViewController *dvc = [[DetailViewControlleralloc]initWithString:_textNstring.text];
//跳转页面
[selfshowViewController:dvc sender:nil];
}
#import <UIKit/UIKit.h>
@interface DetailViewController :UIViewController
- (instancetype)initWithString:(NSString *)string;
@property(nonatomic,strong)UILabel *NSlable;
@end
.m文件
- (instancetype)initWithString:(NSString *)string{
self = [superinit];
if (self) {
_NSlable = [[UILabelalloc]initWithFrame:CGRectMake(100,100, 100, 30)];
_NSlable.textColor = [UIColorblackColor];
_NSlable.backgroundColor = [UIColorwhiteColor];
[self.viewaddSubview:self.NSlable];
_NSlable.text = string;
}
returnself;
}
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColoryellowColor];
- iOS常见的传值方式
- iOS-常见的页面传值方式
- ios常见的几种传值方式
- IOS常见的加密方式
- iOS开发中的常见的几种逆向传值方式
- iOS 初学笔记之常见的几种界面传值方式
- iOS - 6种常见传值方式比较
- iOS常见创建页面的方式
- iOS-常见的数据存储方式
- ios常见存储方式
- iOS常见加密方式
- iOS Selector传值的常见方法
- iOS开发--常见的退出键盘的几种方式
- ios 沙盒和常见的数据存储方式。
- iOS--常见的几种数据存储方式
- iOS中常见的几种存储方式
- iOS数据持久化常见的集中方式及实现
- iOS 几种常见的数据储存方式
- 在SPRING DATA MONGODB中使用聚合统计查询
- 使用SDCycleScrollvVew出现的错误
- js input 数字后面是两位小数点
- Mybatis redis 缓存配置
- ADAMS 快捷键
- iOS常见的传值方式
- Android7.0新特性(Nougat)
- Eclipse插件收集
- EzRgnBtn 控件的四种显示状态:mouse down,mouse up,hot,enable
- ubuntu12.04 GX编译环境搭建
- PMD java代码质量检查
- List<>Copy
- leetcode 70. Climbing Stairs
- vector找最大值 最小值