Swift 协议代理传值(十)

Objective-C

这里演示反向传值

SecondVC.h
@protocol sendValueDelegate <NSObject>
- (void)sendValueString:(NSString *)str;
@end
@interface OC_SecController : UIViewController
@property (nonatomic, assign) id<sendValueDelegate> delegate;
SecondVC.m
// 跳转方法中
- (void)clickBack:(UIButton *)button
{
    if (self.delegate && [self.delegate respondsToSelector:@selector(sendValueString:)]) {
        // i am a String 是传过去的字符串
        [self.delegate sendValueString:@"i am a String"];
    }
    [self dismissModalViewControllerAnimated:YES];
}
RootVC.m

- (void)click:(UIButton *)button
{
    OC_SecController *sec = [[OC_SecController alloc] init];
    // 指定代理人
    sec.delegate = self;
    [self presentViewController:sec animated:YES completion:^{

    }];
}
// 实现代理方法
- (void)sendValueString:(NSString *)str
{
    // str 就是传过来的值
    NSLog(@"string : %@", str);
}

Swift

Swift 版本 我单独创建了一份协议
commond+ n
这里写图片描述

Protrol.swift
// 定义一个协议
protocol ModeViewControlDelegate{
    // 协议方法
    func changeLabelString(newString: String)

}
SecondVC.swift
var delegate : ModeViewControlDelegate?
// 跳转返回的点击事件
func click()->Void{
        let str = textField.text
        self.delegate?.changeLabelString(str!)
        self.dismissViewControllerAnimated(true) { () -> Void in

        }
    }
RootVc.swift
// 实现协议中的方法
    func changeLabelString(newString: String) {

        label.text = "labeltext:\(newString)"
        print(newString) // newString 从secondVC.swift 传过来的值
    }
    // 跳转的点击方法
    func click()->Void
    {
        print("-------")
        let sec = SecViewController();
        sec.delegate = self
        self.presentViewController(sec, animated: true) { () -> Void in

        }
    }

demo: https://github.com/Zhangjingwang1993/SwiftProtocol
Swift / OC 进阶群: 498143780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值