1
如何这个代码转换为雨燕转换的typedef斯威夫特
typedef UIViewController<CalendarViewControllerNavigation> CalendarViewController;
试图到处找解决办法,但似乎我无法找到它的一个引用。
如何这个代码转换为雨燕转换的typedef斯威夫特
typedef UIViewController<CalendarViewControllerNavigation> CalendarViewController;
试图到处找解决办法,但似乎我无法找到它的一个引用。
在斯威夫特4您可以使用:
typealias CalendarViewController = UIViewController & CalendarViewControllerNavigation
它采用新protocol composition type。 另请参阅SE-156。
我面临同样的问题使用日历库从https://github.com/jumartin/Calendar。
我已经解决了这个问题,如下所示。
protocol CalendarViewControllerNavigation: NSObjectProtocol {
func move(to date: Date, animated: Bool)
}
typealias CalendarTypeController = UIViewController
extension CalendarTypeController:CalendarViewControllerNavigation{
internal func move(to date: Date, animated: Bool) {
}
internal func deviceIsRotated() {
}
internal func selectedEventForAddSession(event:EventDetail) {
}
}
protocol CalenderViewControllerDelegate : NSObjectProtocol {
func calendarViewController(_ controller:CalendarTypeController, showDate:NSDate)
}
希望这段代码能帮到你!
你使用'typealias'标签来处理你的问题。所以你似乎已经知道答案。 – rmaddy
Swift目前不支持表达从类继承而来的类型,并且符合给定的协议 - 但[它将在未来版本的语言中](https://github.com/apple/swift-evolution /blob/master/proposals/0156-subclass-existentials.md)。 – Hamish
你有什么其他方式可以做到这一点吗?也许创建扩展UIViewController按协议的类型到该扩展? – Thanh