2016-09-28 50 views
0

我想在textfield中创建一个按钮,所以我创建了一个按钮并调用xibSetup()中的函数。运行程序时,函数被调用。但不能在App中加载。陷入了它。自定义子视图不在xib加载

class NormalLogin: UIView { 

weak var delegate:NormalLoginDelegate? 
@IBOutlet weak var passwordField: UnderLinedTextField! 
var view: UIView! 
func showHideButton() { 
    let btn = UIButton(frame: CGRect(x: self.frame.width - 70 , y: self.frame.size.height - 20 , width: 50, height: 20)) 
    btn.backgroundColor = UIColor.blackColor() 
    btn.layer.borderWidth = 5 
    btn.layer.borderColor = UIColor.blackColor().CGColor 
    btn.setTitle("Click Me", forState: UIControlState.Normal) 
    self.passwordField.addSubview(btn) // add to view as subview 
} 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    xibSetup() 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    xibSetup() 
} 

func xibSetup() { 
    view = loadViewFromNib() 
    view.frame = bounds 
    view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 
    showHideButton() // Custom button i made 
    addSubview(view) 
} 

func loadViewFromNib() -> UIView { 
    let bundle = NSBundle(forClass: self.dynamicType) 
    let nib = UINib(nibName: "NormalLogin", bundle: bundle) 
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 
    return view 
} 

}

难道我做错什么?

+0

确定X和Y的积分,你必须给按钮框架是正确的? ,因为我猜它应该根据密码字段的框架而不是self.view。 –

回答

1

我猜它的发生,因为你是给错帧按钮

试试这个

let btn = UIButton(frame: CGRect(x: self.passwordField.frame.width - 70 , y: self.passwordField.frame.height - 20 , width: 50, height: 20)) 
+0

passwordField:UnderLinedTextField!没有成员宽度/高度。 – Joe

+0

已更新。我只是指出按钮框架应该根据passwordField。 – Sahil