Использование протокола Swift в Objective-C

objective-c swift delegates

1518 просмотра

1 ответ

Я работаю над преобразованием моего проекта из Objective-c в Swift, и класс Swift, который я использую, я protocolпытаюсь получить доступ к классу Objective-c. Моя проблема в том, что delegateнедоступно в классеjective-c. Вот мой быстрый класс:

protocol RateButtonDelegate {
    func rateButtonPressed(rating: Int)
}

class RateButtonView: UIView {


    var delegate: RateButtonDelegate?

    var divider1: UIView!
    var divider2: UIView!
}

Когда я смотрю на MyProject-Swift.hфайл, я не вижу delegate:

@interface RateButtonViewTest : UIView
@property (nonatomic) UIView * divider1;
@property (nonatomic) UIView * divider2;
@end

и когда я пытаюсь использовать rateButtonView.delegateв своем классе Objective-C, я получаю ошибку компилятора.

Кто-нибудь знает проблему? Как получить доступ к протоколу Swift в Objective-c?

Автор: coder Источник Размещён: 12.11.2019 09:40

Ответы (1)


6 плюса

Решение

Вам нужно пометить свой протокол @objcатрибутом, чтобы он был доступен из Objective-C:

@objc protocol RateButtonDelegate {
    func rateButtonPressed(rating: Int)
}

Эта страница из документации Apple охватывает проблему.

Автор: Nate Cook Размещён: 20.10.2014 06:10
Вопросы из категории :
32x32