我正在尝试以编程方式将自定义视图添加到我的视图控制器中。我使用了这段代码而没有成功出现在我的主视图控制器前面。
var DynamicView = CustomFilter()
DynamicView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(DynamicView)
CustomFilter类:
import UIKit
class CustomFilter:
UIView {
@IBOutlet weak var party: UIButton!
@IBOutlet weak var outdoors: UIButton!
@IBOutlet weak var sports: UIButton!
@IBOutlet weak var diner: UIButton!
@IBOutlet weak var music: UIButton!
@IBOutlet weak var gaming: UIButton!
}
自定义过滤器连接到xib文件。
Xib文件:
是否有可能自定义视图无法放置?我不确定我做错了什么。
答案 0 :(得分:2)
为了使用我们在xib中设计的视图,我们大多数是从xib加载的。
if
let bundle = NSBundle(forClass: CustomFilter.self),
let nib = bundle.loadNibNamed("<#Xib File Name#>", owner: self, options: nil),
let dynamicView = nib.first as? CustomFilter {
self.view.addSubview(dynamicView)
}
另一种方法是编写CustomFilter
init
来加载xib本身的视图。
更明显的是,您遇到的问题是,您的CustomFilter
初始化程序都不会关心您创建的xib文件,除非您编写它们并告诉它们关心它。您当前的代码返回0x0视图,可能是白色或背景清晰。如果您修改了当前代码,将CustomFilter
的框架设置为0x0以外的尺寸,并将背景颜色设置为UIColor.greenColor()
,那么您可以将其视为日期
此外,您可以使用Xcode的可视化调试器来查找它。
答案 1 :(得分:0)
它可能是零高度和零宽度,也可能在屏幕外。
您需要赋予它高度和宽度约束以及x和y位置约束。
您应该也可以使用CustomFilter(frame: someFrameRect)
,因为我记得initWithFrame是UIView的指定初始化程序。
另外,变量名称应以小写字母开头,因此DynamicView
应为dynamicView