在Swift中创建IBOutlet导致'class不能与()一起构造

时间:2014-07-21 23:55:23

标签: swift

我的代码在升级到beta 4之前编译得很好,但我认为他们用IBOutlets改变了一些东西。

旧语法是:

@IBOutlet var tableView: UITableView

新语法是:

@IBOutlet weak var tableView: UITableView!

当我从我的xib文件拖动到类文件时,这是Xcode生成的默认代码。

然而,使用这种新语法,我无法构建我的类的实例。请看以下示例:

class TestViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!
}

然后,如果我尝试做任何一次

var controller = TestViewController(nibName: nil, bundle: nil)

var controller = TestViewController()

我收到错误:

  

TestViewController不能与()

构造

然后创建控制器实例的正确方法是什么?目前对我有用的唯一方法是使插座可选,但我宁愿不这样做。

2 个答案:

答案 0 :(得分:1)

你能试试吗?

@IBOutlet var tableView: UITableView?

我知道这不是答案,但在此之后错误消失了。

答案 1 :(得分:0)

解决方案似乎是在该视图控制器中实现init方法:

init()
{
    super.init(nibName: nil, bundle: nil)
}

我不确定为什么会这样。