假設swift中有兩個類,另一個是同一個項目中的objective-c類。如何使用swift 4在目標c類中符合swift類委託?
在swift類中,我聲明瞭委託,並且我想在目標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")
}
的目標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行代表是使用目標c設置的,它現在被評論,但我想在swift中設置相同的代表4 ,沒有行2,當我嘗試設置在SWIFT 4代表我收到以下錯誤
爲「SwiftLoginViewController」不可見@interface聲明 選擇「setdelegate」;
注:
還有一個我能夠訪問所有的var和功能 迅速類客觀C級定義。我無法設置在swift Class中聲明的目標c類中的 Delegate。
任何人都可以知道我在做什麼錯在上面的代碼?所有的投入都讚賞。
我已經這樣做了,但仍然得到相同的錯誤「沒有可見@interface爲'SwiftLoginViewController'聲明選擇器'setdelegate'; 」我能夠訪問快速類變量和方法,但我無法設置在Swift類中,在Objective C類中聲明委託。 –
一切都已經交給你了!我甚至在這個答案中提供了一個示例項目。您需要學習如何在Objective-C項目中使用Swift類。祝你好運。 – Glenn