Ios Swift通用变量

Ios Swift通用变量,ios,generics,swift,Ios,Generics,Swift,我有一个协议,我希望有一个UIViewController类型的变量来实现mu协议。如果我尝试做以下事情: var delegate:UIViewController<BouncingMenuDelegate>? var委托:UIViewController? 我收到错误消息,UIViewController是非泛型类型。然后问题是如何访问我们在Objective-C中用于访问代表的模型?提前谢谢你 如果类实现了一个协议,那么您不关心它实际上是哪个类。这应该起作用: var de

我有一个协议,我希望有一个UIViewController类型的变量来实现mu协议。如果我尝试做以下事情:

var delegate:UIViewController<BouncingMenuDelegate>?
var委托:UIViewController?

我收到错误消息,UIViewController是非泛型类型。然后问题是如何访问我们在Objective-C中用于访问代表的模型?提前谢谢你

如果类实现了一个协议,那么您不关心它实际上是哪个类。这应该起作用:

var delegate: BouncingMenuDelegate?

不能像在Swift中那样声明变量类型

解决问题的最简单方法是将
UIViewController
方法/属性添加到
bountingmenudelegate
要求:

@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?
}

是的,我试过这个,但它不起作用。实际上,我需要访问一个实现我的协议的UIViewController实例。这是一个黑客行为,应该注意到这一点。