我在MySample.xib
中创建了一个自定义UIView。我已将课程MyView
添加到xib的File Owner
。
MyView.swift
class MyView: UIView {
@IBOutlet var view: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {
NSBundle.mainBundle().loadNibNamed("MySample", owner: self, options: nil)
self.addSubview(self.view)
}
}
我现在从MyView
文件加载此MyController
,如下所示:
MyController.swift
class MyController: UIViewController {
init() {
super.init(nibName: nil, bundle: nil)
view.addSubview(MyView())
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
现在要显示此视图,我将使用以下来自其他控制器UIButton
的代码:
presentViewController(MyController(), animated: true, completion: nil)
这会在屏幕上显示视图。但问题是,它不接受任何用户交互。在我的自定义视图中,我有一个UITableView可以显示数据,但由于缺乏用户交互,它不会滚动或点击。
知道我做错了吗?
答案 0 :(得分:0)
您不必重新实例化两次 已经使用了design pattern。
这很简单。只需写下:
class MyController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Get all views in the xib
let view = MyView()
self.view.addSubview(myView)
//TODO: set wanted constraints.
}}
它会起作用。