假设在同一个项目中有两个类,一个是Swift类,另一个是Objective-C类。
在Swift类中,我声明了委托,并希望在Objective-C类中设置该委托。
我按照以下方式完成了这个操作...
如果您检查onRegister方法,第1行使用Objective-C设置了委托,这已被注释掉,但我想在第2行使用Swift 4设置相同的委托,当我尝试在Swift 4中设置委托时,出现以下错误:
“No visible @interface for 'SwiftLoginViewController' declares the selector 'setdelegate';”
注意:
我能够访问Swift类中定义的所有变量和函数,但无法在Objective-C类中设置在Swift类中声明的委托。
有没有人知道我在上面的代码中做错了什么? 欢迎任何意见。
在Swift类中,我声明了委托,并希望在Objective-C类中设置该委托。
我按照以下方式完成了这个操作...
import UIKit
@objc public protocol SwiftLoginVCDelegate: class {
}
@objc public class SwiftLoginViewController: UIViewController {
@IBOutlet var txtUserName: UITextField!
@IBOutlet var txtPassword: UITextField!
@IBOutlet var btnLogin: UIButton!
var delegate: SwiftLoginVCDelegate?
override public func viewDidLoad() {
super.viewDidLoad()
self.txtPassword.text = "XYZ"
self.txtPassword.text = "123"
self.btnLogin.backgroundColor = UIColor.blue
}
@objc public func testObjective(){
print("Swift class is integrated in objective c project")
}
Objective-C类是什么?
#import "Mediator.h"
@class SwiftLoginViewController;
@protocol SwiftLoginVCDelegate;
@interface LoginMediator : Mediator
@end
实现类是
#import "xyz-Swift.h"
@class SwiftLoginViewController;
@implementation LoginMediator
-(void)onRegister
{
// line 1: [(XYZController*)self.viewComponent setDelegate:self];
line 2 : [(SwiftLoginViewController*)self.viewComponent setDelegate:self];
[objectVC testObjective];
}
如果您检查onRegister方法,第1行使用Objective-C设置了委托,这已被注释掉,但我想在第2行使用Swift 4设置相同的委托,当我尝试在Swift 4中设置委托时,出现以下错误:
“No visible @interface for 'SwiftLoginViewController' declares the selector 'setdelegate';”
注意:
我能够访问Swift类中定义的所有变量和函数,但无法在Objective-C类中设置在Swift类中声明的委托。
有没有人知道我在上面的代码中做错了什么? 欢迎任何意见。
@objc weak public var delegate: SwiftLoginVCDelegate?
- Antony Raphel