OC、swift混编中的反向传值
一 OC向swift传值
1) 代理
1.1在oc中创建 代理
#import <UIKit/UIKit.h>
@protocol SecondDelegate <NSObject>
-(void)refreshHintLabel:(NSString *)hintString;
@end
@interface SecondViewController : UIViewController
@property (nonatomic,weak)id<SecondDelegate> secondDelegate;
@end
1.2在oc的是实现中使用代理
if ([_secondDelegate respondsToSelector:@selector(refreshHintLabel:)]) {
[_secondDelegate refreshHintLabel: @""];
}
1.3 swift成为oc的 代理 并实现代理方法
class UserInfoView:FViewController,SecondDelegate{
func refreshHintLabel(_ hintString: String!) {
print( "text = " + hintString)
}
}
2)Block回掉
2.1 在OC张中声明回调
typedef void(^RefreshHintLabelBlock)(NSString *hintString);
@interface SecondViewController : UIViewController
@property (nonatomic, copy) RefreshHintLabelBlock hintBlock;
@end
2.2 oc中使用回调
if (_hintBlock) {
_hintBlock(textField.text);
}
2.3 swift。调用回调
secondVC.hintBlock = {(t:String?)in
self.hintLabel.text = "secondView textView.text = " + t!
}