无法构造'UITabBarDelegate',因为它没有可访问的初始值设定项

时间:2015-03-11 00:58:25

标签: ios swift

我从Android开发的背景来到iOS世界。

我正在努力避免将故事板项目直接连接到我的控制器(如@IBOutlet)的奇怪模式(至少对于Android开发者而言)。

我想知道是否可以创建一个匿名函数来委派UITabBar的一些事件:

    let tabBarDelegate = UITabBarDelegate {
        func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
            label.text = item.title
        }
    }

    tabBar.delegate = tabBarDelegate

我面临的错误就是这个:'UITabBarDelegate' cannot be constructed because it has no accessible initializers

我对这个世界真的很陌生。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

您无法实例化UITabBarDelegate,因为它是一个协议(类似于Java中的接口),而不是类。

你必须让你的一个类声明它实现UITabBarDelegate,然后将该类的实例设置为标签栏的委托。

这是一个简短的例子:

class MyViewController: UIViewController, UITabBarDelegate {
    //all of UITabBarDelegate's methods are optional, so you don't have to implement them
    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
    }
}

var viewController = MyViewController()
var tabBar = UITabBar()
tabBar.delegate = viewController

另外,我不相信你可以在Swift中创建匿名类。