2016-09-28 52 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