我在 iOS 8 beta 4 中创建了一个测试项目,其中包括一个主视图控制器和一个作为 UIViewController 子类及带有 xib 文件的第二个视图控制器。
我在主控制器上放置了一个按钮来呈现第二个控制器:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func testVCBtnTapped() {
let vc = TestVC()
presentViewController(vc, animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
我运行这个应用程序,按下按钮后呈现第二个控制器-一切都很好。
升级到xcode beta 5后,当我按下按钮时屏幕会变黑。
因为我知道他们改动了初始化代码,���以我试着添加重载来看是否可以修复它:
class TestVC: UIViewController {
override init() {
super.init()
}
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
同样的问题。在xcode接受的所有可能组合中更改“required”和“overrides”没有任何效果。
如果我使用storyboard创建另一个控制器并进行segue,一切都好。
有什么想法吗?
编辑-新信息
- 在init中尝试nibName = nil-同样的问题
- 用objective c创建相同的应用程序,它可以正常工作
显然是Swift beta 5的问题