作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在尝试学习有关创建容器 View Controller 的教程。它在 Objective-C 中。我想将它转换为 Swift。我在这里发现了一些相同的问题,但我并没有从中得到太多。
这是代码。
import UIKit
class ContainerViewController: UIViewController { // Class "ContainerViewController" has no initializers - That I know why.
// 'required' initializer 'init(coder:)' must be provided by a subclass of UIViewController
var currentDetailViewController: UIViewController
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
我已尝试执行这两个错误所说的操作,但仍然无效。
最佳答案
问题是:如果声明任何存储属性没有初始值,则必须实现自己的初始化程序来初始化它们。见this document .
像这样:
var currentDetailViewController: UIViewController
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
currentDetailViewController = UIViewController()
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
convenience override init() {
self.init(nibName: nil, bundle: nil)
}
required init(coder aDecoder: NSCoder) {
currentDetailViewController = UIViewController()
super.init(coder:aDecoder)
}
但是,我认为这不是您想要的。
正确的解决方案取决于您在哪里初始化 currentDetailViewController
。
如果您始终在viewDidLoad
中对其进行初始化,那么您可以将其声明为"Implicitly Unwrapped Optional"。
var currentDetailViewController: UIViewController!
override viewDidLoad() {
super.viewDidLoad()
self.currentDetailViewController = DetailViewController()
}
否则,如果currentDetailViewController
可以是nil
,您应该将其声明为"Optional"。
var currentDetailViewController: UIViewController?
关于ios - UIViewController 的子类所需的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838909/
我想成为 Spark 纱客户(link)。是否需要安装hadoop?还是只安装 yarn 可以吗? (by this link) 最佳答案 No Spark不需要Hadoop即可运行。 Apache
我是一名优秀的程序员,十分优秀!