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