协议传值

协议传值是一种反向传值的方法,通常通过后一个界面向前一个界面传值,也称为反传。
首先介绍一下协议传值的大致思路,这里用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. 在需要使用值的地方 使用属性记录的值

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐