【iOS】协议传值和属性传值

多界面传值

在切换不同的ViewController视图控制器时,通过某些方法将A视图控制器中想要的某些数据传输到B视图控制器中

属性传值

属性传值最大的特点就是正向传值,即A页面传值给B页面

第一步:

  • 既然是属性传值,传值给B,那么,就在B的.h文件里声明一个属性(之所以在B.h中声明,是因为在B.h中声明的属性在A的文件里,在新创建B视图控制器后也可以访问)
# B.m文件中
@property (nonatomic,copy) NSString *sendText;
  • 利用这个NSString,可以将拿到的值赋给B中的Labeltextfield

第二步:

  • 在A.m中进行给B的属性赋值并跳转控制器
-(void)ASendMessageToB {

    BViewController* bViewController = [[BViewController alloc] init];
    
    //获取Bvc就可以拿到B中的属性,并在A控制器里赋值了
    bViewController.sendText = self.label.text;		//这个就是需要传给B控制器的值,根据需要自己赋值
    
    //跳转控制器
    [self presentViewController:bViewController animated:YES completion:nil];

  • 注意要在A的文件中创建一个新的B视图控制器,这样才能正常访问B的sendText属性,并对其进行赋值

第三步:

  • 此时在B文件中的self.sendText属性已经被赋值了,已经传值完毕,再根据需要进行使用

协议传值

属性传值最大的特点就是反向传值,即B页面传值给A页面

第一步

  • 创建协议
@protocol SecondViewControllerDelegate<NSObject>

 //传值的方法一般都带一个或者多个参数

-(void)passValue:(NSString *)string

第二步:

  • 创建一个代理人属性 用来执行协议
@property(nonatomic,assign)id<SecondViewControllerDelegate>delegate;
  • 注意要用assign关键字来添加delegate属性

第三步:

  • 在合适的位置设定好代理 delegate的对象执行协议方法
  [self.delegate passValue:self.text.field.text];

第四步:

  • 遵循协议,在被传值的视图控制器文件遵循上述协议
@interface MainViewController ()<SecondViewControllerDelegate>

第五步:

  • 设置第二个页面的代理人
secondVC.delegate = self;
 
    [self.navigationController pushViewController:secondVC animated:YES];
    [secondVC releas

第六步:

  • 实现相应的协议方法
- (void)passValue:(NSString *)string
{
    // 利用传过来的string参数 给自己的空间赋值
    
    UIButton *button = (UIButton *)[self.view viewWithTag:10000];
    self.title = string;
    [button setTitle:string forState:UIControlStateNormal];
}

记住传输的是什么类型,这里就写什么类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS,可以通过WKWebView与JavaScript进行交互传值。以下是一些常见的方法: 1. 使用JavaScriptCore框架:在iOS 7及以上版本,可以使用JavaScriptCore框架来实现WKWebView与JS的交互传值。具体实现步骤如下: (1)在iOS创建一个JSContext实例,通过该实例可以操作JS环境。 (2)将JSContext实例设置到WKWebView的配置对象。 (3)在JS调用iOS方法时,可以通过window.webkit.messageHandlers对象进行调用,例如window.webkit.messageHandlers.methodName.postMessage(params)。 (4)在iOS,可以通过WKScriptMessageHandler代理方法来接收JS传递的消息,并进行处理。 2. 使用WKScriptMessageHandler协议:在iOS 8及以上版本,可以通过WKScriptMessageHandler协议来实现WKWebView与JS的交互传值。具体实现步骤如下: (1)在WKWebView的配置对象设置WKUserContentController的代理对象,并添加需要监听的JS方法名。 (2)在JS调用iOS方法时,可以通过window.webkit.messageHandlers对象进行调用,例如window.webkit.messageHandlers.methodName.postMessage(params)。 (3)在iOS,可以通过WKScriptMessageHandler代理方法来接收JS传递的消息,并进行处理。 无论使用哪种方法,都需要注意JS和iOS之间传递的数据类型和格式。通常,JS传递的是字符串类型的数据,在iOS需要进行解析和转换。同时,为了避免安全问题,需要对JS传递的数据进行校验和过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值