iOS——协议传值
协议传值协议传值是一种反向传值的方法,通常通过后一个界面向前一个界面传值,也称为反传。首先介绍一下协议传值的大致思路,这里用A,B界面分别表示前后界面。1.首先在B中声明协议以及协议包含的方法:#import <UIKit/UIKit.h>@protocol RegisterViewControllerDelegate <NSObject>- (void) register
·
协议传值
协议传值是一种反向传值的方法,通常通过后一个界面向前一个界面传值,也称为反传。
首先介绍一下协议传值的大致思路,这里用A,B界面分别表示前后界面。
1.首先在B中声明协议以及协议包含的方法:
#import <UIKit/UIKit.h>
@protocol RegisterViewControllerDelegate <NSObject>
- (void) registerReturn: (NSString*) nameStr andPass: (NSString*) passStr;
@end
2.在B中定义一个代理对象,该对象需要调用上面协议中的方法
@property (nonatomic, assign) id<RegisterViewControllerDelegate> delegate;
其属性关键字一般为nonatomic, assign。
3.在A中定义B界面时,设置代理
- (void) pressRegister {
printf("1");
RegisterViewController* registerViewController = [[RegisterViewController alloc] init];
registerViewController.delegate = self;
registerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:registerViewController animated:YES completion:nil];
}
4.在B中将想要传的值传入协议函数中
- (void) pressFinish {
if ([_userSecondPassword.text isEqual:_userPassword.text] && [_userName.text isEqualToString:@""] == NO && [_userPassword isEqual:@""] == NO) {
printf("1");
NSLog(@"%@", _userName.text);
[_delegate registerReturn:_userName.text andPass:_userPassword.text];
}
5.在A中实现协议中的函数,并且保证A中有相对应的属性去接受传来的值
@property (nonatomic, copy) NSString* tureName;
@property (nonatomic, copy) NSString* turePass;
// 实现协议函数
- (void) registerReturn:(NSString *)nameStr andPass:(NSString *)passStr {
_tureName = nameStr;
_turePass = passStr;
}
以上就是协议传值大致的步骤操作。
属性传值
属性传值和协议传值相反,一般是从前面的界面向后一个界面传值。
步骤如下:
1.在后面的界面中创建一个属性用于保存前一个界面传过来的值。
2.在创建完后面的界面后,为属性赋值。
3. 在需要使用值的地方 使用属性记录的值
更多推荐
所有评论(0)