UIButton setTitle不起作用

时间:2015-02-18 18:34:35

标签: swift uibutton xcode6

我试图在点击UIButton时更改它的文本。我尝试过以下事情,但都失败了:

首先,我尝试在故事板上插入一个按钮并将其链接到视图控制器,按钮的代码如下所示:

@IBAction func button(sender: AnyObject) {}. 

在按钮的括号内,我使用了

button.setTitle ("something" , for State: .Selected)

但是,当我在模拟器中运行此代码时,它似乎根本不起作用。

我还尝试按照Apple参考手册,在单击所述按钮后在侧边菜单中为不同状态设置不同的标签,但这仍然无法正常工作。 任何人都可以准确地告诉我(即要编写什么代码以及它究竟在哪里)如何实现这一目标?

6 个答案:

答案 0 :(得分:8)

创建IBAction函数时,发件人的类型应为UIButton。 发件人是您的按钮。点击按钮时会调用该功能。您必须在发件人(您的按钮)上使用 setTitle 功能。

@IBAction func buttonTouchedUpInside(sender: UIButton) { 
    sender.setTitle("buttonName", forState: .normal)
}

答案 1 :(得分:2)

为您的按钮创建一个IBOutlet,然后此代码应该有效(假设您将IBOutlet命名为button):

button.setTitle("title", forState: .Normal)
button.setTitle("title 1", forState: .Application)
button.setTitle("title 2", forState: .Highlighted)
button.setTitle("title 3", forState: .Reserved)
button.setTitle("title 4", forState: .Selected)
button.setTitle("title 5", forState: .Disabled)

将其放在viewDidLoad()方法中。

答案 2 :(得分:2)

Swift 4:

普通标题

setTitle()方法适用于" Plain"在按钮的属性检查器中定义。

@IBAction func button(sender: UIButton) { 
     sender.setTitle("buttonName", for: .normal)
}

归属标题

setTitle()方法对按钮的标题没有任何影响,如果它被配置为"归属"在“属性”检查器中。要管理这种情况,首先从按钮获取属性标题,然后设置值。

@IBAction func button(sender: UIButton) { 
     let attributedTitle = sender.attributedTitle(for: .normal)
     attributedTitle?.setValue("buttonName", forKey: "string")
     sender.setAttributedTitle(attributedTitle, for: .normal)
}

答案 3 :(得分:2)

实际上,如果您使用情节提要或Xib文件中的按钮,并且未清除(Storyboard,Xib)中的按钮值,则setTitle方法将不起作用。如果清除按钮值,则setTitle方法有效。

答案 4 :(得分:1)

这对我有用。

dispatch_async(dispatch_get_main_queue(), ^{
        [self.btnAssment setTitle:@"ASSDate" forState:UIControlStateNormal];
    });

答案 5 :(得分:1)

let button = UIButton()
button.setTitle("Button", for: .normal)
button.setTitleColor(.black, for: .normal)
相关问题