来自rightView的UITextField引用

时间:2015-06-12 07:17:46

标签: ios swift uibutton uitextfield

我正在为UIButton的{​​{1}}设置rightView。此外,我正在设置通过

UITextField添加目标操作
UIButton

我想知道如何从指定为myButton.addTarget(self, action: "buttonPressed:", forControlEvents: .TouchUpInside) 的方法访问UITextField,其方法签名如下:

buttonPressed

我试过了

func buttonPressed(sender: UIButton) {

}

但我似乎得到了sender.superview as! UITextField

此外,我无法使用标签,因为它已用于其他目的。

修改

有关详细信息,nil发生在myButton.addTarget()内,这就是我在视图控制器中没有UITableViewCell {。}}的原因。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的代码是正确的

我尝试如下,它正在为我工​​作

自定义textField

    var textFiled = UITextField(frame: CGRectMake(20.0, 50.0, 100.0, 33.0))
    textFiled.borderStyle = UITextBorderStyle.RoundedRect

    let purpleImageButton = UIButton(frame :CGRectMake(0, 0, 10, 30))
    purpleImageButton.backgroundColor = UIColor.blackColor()
    purpleImageButton.setTitle("T", forState: UIControlState.Normal)
    purpleImageButton.addTarget(self, action: "buttonPressed:", forControlEvents: .TouchUpInside)
    textFiled.rightViewMode = UITextFieldViewMode.Always
    textFiled.rightView = purpleImageButton
    self.view.addSubview(textFiled)

功能buttonPressed

func buttonPressed(sender: UIButton) {
    let textF : UITextField = sender.superview as UITextField
    textF.text = "Hello"
}

点击之前

enter image description here

单击textField的按钮后:

enter image description here

希望你能找到问题所在。

这是Xcode版本6.1。所以,我的例子将按照Swift 1.1。