Как исправить "не соответствует протоколу", когда в нем
Я пытаюсь реализовать git-проект XLPagerTabStrip.
Согласно проекту каждый контроллер должен:
Каждый контроллер представления, предоставленный методом viewControllers PagerTabStripDataSource (для метода:), должен соответствовать InfoProvider
Но следующий код бросает: does not conform to protocol
extension UserProfileSubController: IndicatorInfoProvider {
func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
return IndicatorInfo(title: "UserProfileSubController")
}
}
Если я хочу автоматически решить проблему, он повторно реализует ту же функцию протокола, а затем выбрасывает недопустимое повторное объявление.
Как вы исправите does not conform to protocol
вопрос, если ваш контроллер на самом деле соответствует этому? Что мне не хватает? Помощь очень ценится.
PS: Я очистил проект, папку сборки, удалил производные данные, перезапустил и выполнил обновление модуля, а также переустановил модуль.
3 ответа
В конце концов это была проблема копирования / вставки / зависимости. Запуск и удаление кода модуля и зависимости и повторная установка решили проблему в конце.
Проверьте класс IndicatorInfo следующим образом:
public struct IndicatorInfo {
public var title: String?
public var image: UIImage?
public var highlightedImage: UIImage?
public init(title: String?) {
self.title = title
}
public init(image: UIImage?, highlightedImage: UIImage? = nil) {
self.image = image
self.highlightedImage = highlightedImage
}
public init(title: String?, image: UIImage?, highlightedImage: UIImage? = nil) {
self.title = title
self.image = image
self.highlightedImage = highlightedImage
}
}
вместо публичной структуры IndicatorInfo{} вы использовали открытый протокол IndicatorInfo{}
И я надеюсь, что вы можете использовать только один протокол в одном классе.
extension YourViewController : IndicatorInfoProvider {
// MARK: - Top Tab Bar Method - IndicatorInfoProvider
func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
return IndicatorInfo(title: "titleStringHere", image: UIImage(named: "Your_Image_Name"))
/*or return IndicatorInfo(title: "titleStringHere") */
}
}
Я не уверен, что это сработает, но попробуйте это:
- поместите код в класс, а не в расширение.
- использовать этот конкретный стручок
pod 'XLPagerTabStrip', '~> 7.0'