2016-09-26 175 views
1

用XIB1创建的UIView我想创建一个自定义视图用XIB1, 所以,我没有CreateTask.xib包含一个TextField 和类是CustomUIView:UIView的斯威夫特

我遵循 http://swiftdeveloperblog.com/creating-custom-user-interface-files-with-xib-in-xcode-6-and-swift/

这一步

 
import UIKit

class CreateTaskView: UIView {

@IBOutlet weak var taskNameField: UITextField! var nibView: UIView! var taskName: String? { get { if taskNameField == nil { return "taskNameField is nil" } if let s = taskNameField.text { return s } else { return "" } } } override init(frame: CGRect) { super.init(frame: frame) setup() } required init?(coder aDecoder: NSCoder) { print("infinite loop") super.init(coder: aDecoder) setup() } func setup() { nibView = loadViewFromNib() nibView.frame = bounds nibView.autoresizingMask = [UIViewAutoresizing.flexibleWidth ,UIViewAutoresizing.flexibleHeight] addSubview(nibView) } func loadViewFromNib() -> UIView { let nib = UINib(nibName: "CreateTask", bundle: nil) let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView return view }

} 当我实例CreateTaskView,即CreateTaskView由loadViewFromNib创建无限

() ,我想这可能是“xib类是CustomUIView”的原因,所以我把它拿出来了。

但我无法在xib中获得UITextField插座,我该怎么办?

回答

1

从类本身创建nib并不是一个好主意,而是创建customview实例的类应该使用它的nib文件加载视图。一个Objective-C例如:

CustomView *myView = (CustomView *)[[[NSBundle mainBundle] loadNibNamed:@"CustomViewXIB" owner:nil options:nil] firstObject]; 

它将通过使用其相应的XIB文件创建CustomView类的实例。

0
  1. 转到CreateTask.xib和挖掘文件的所有者选项卡
  2. 由攻Identity Inspector设定的厦门国际银行的所有者和设置自定义类作为CreateTaskView
  3. 然后尝试创建文本框的出口CreateTaskView