2014-10-18 4 views
1

У меня есть протокол, и я бы хотел иметь переменную типа UIViewController, реализующую mu-протокол. Если я попытаюсь сделать что-то вроде:Быстрая общая переменная

var delegate:UIViewController<BouncingMenuDelegate>? 

Получаем ошибку, что UIViewController - это не общий тип. Тогда возникает вопрос, как получить доступ к модели, которую мы использовали в Objective-C для доступа к делегатам? Заранее спасибо!

ответ

1

Вы не можете объявить тип переменной, как в Swift.

Самый простой способ, чтобы решить вашу проблему добавления UIViewController методы/свойства для BouncingMenuDelegate требования:

@objc protocol BouncingMenuDelegate { 
    // Delegate methods 
    func boudcingMenu(bouncingMenu:BouncingMenu, didSelectItemAtIndex index:Int) 

    // required methods/properties from UIViewController 
    var view:UIView { get } 
    var navigationController:UINavigationController? { get } 
    func presentViewController(viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) 
} 

class BouncingMenu:UIView { 
    weak var delegate:BouningMenuDelegate? 
} 
+0

Хотя сначала это может быть легко. Это взлом, и это следует отметить. – GDanger

0

Если класс реализует протокол, вам все равно, какой класс он на самом деле. Это должно работать:

var delegate: BouncingMenuDelegate? 
+0

Да, я попробовал это, и это не работает. Фактически, мне нужно получить доступ к экземпляру UIViewController, который реализует мой протокол. – Majotron

Смежные вопросы