UIButton的选定状态不适用于iOS7

时间:2013-10-05 14:28:52

标签: iphone ios objective-c xcode uibutton

我正在使用Xcode 5的故事板来创建一个应用程序iOS SDK 7.0。

我将一个按钮拖到视图中。我希望我的按钮默认显示“A”。以下是按钮属性: 类型:系统,状态配置:默认,标题:普通

我希望我的按钮在选定状态下显示“B”。因此,更改的按钮属性: 状态配置:已选择

在Button的属性检查器中,在Control下,有一个名为Selected的属性。 如果我选中选中,而不是显示“B”,它只是突出显示为A上的标记,即没有看到字符。

我在XCODE中运行它。如果未选择按钮,则按预期显示“A”,但是当我选择按钮而不是显示B时,按钮的文本部分将以浅蓝色突出显示。此外,我从未在控制下选择突出显示的内容。

如何解决这个问题,以便我能正确显示状态?

3 个答案:

答案 0 :(得分:6)

对于按代码设置按钮标题的任何人,我发现在iOS 7.1上,您需要为各种按钮状态显式设置标题,而在iOS 7.0上,设置UIControlStateNormal的标题也适用于其他按钮状态。

// works on 7.0
[self.ibActionButton setTitle:NSLocalizedString(@"Register", nil) forState:UIControlStateNormal];

// works on 7.1
[self.ibActionButton setTitle:NSLocalizedString(@"Register", nil) forState:UIControlStateNormal|UIControlStateDisabled];

答案 1 :(得分:5)

在故事板中状态配置设置为选定时,您需要将按钮的标题设置为“B”。然后,您需要将操作连接到按钮的Touch Up Inside事件。在该操作内部,切换按钮的selected属性。

当您在“属性”检查器下选中“已选择”时,您只是将按钮的初始选择状态设置为“是”。 XCode还会显示该按钮在该状态下的样子。

答案 2 :(得分:3)

我发现这是XCODE 5中的一个错误,也就是说,当我们在按钮的Control下选中所选属性时,它不会在Button上显示所选状态。它适用于我们运行应用程序的模拟器。我们需要为按钮执行目标操作并切换所选状态,如下所示

 - (IBAction)flipButton:(UIButton *)sender {
      sender.selected=!sender.isSelected;
   }