UIButton的选定状态不在iOS7中工作

我正在使用Xcode 5的storyboard来创build一个应用程序,iOS SDK 7.0。

我把一个button拖到视图。 我希望我的button默认显示“A”。 以下是button属性:types:系统,状态configuration:默认,标题:普通

我想让我的button在选定的状态下显示“B”。 所以,改变的button属性:State Config:Selected

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

我在XCODE中运行它。 当没有selectbutton时如期望的那样显示“A”,但是当我selectbutton而不是显示B时,button的文本部分以淡蓝色突出显示。 另外,我从来没有select控制下的突出显示的内容。

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

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

当您选中“属性”检查器中的“选定”时,只需将button的初始select状态设置为“是”即可。 XCode还会显示button在该状态下的样子。

对于任何通过代码设置button标题的人,我发现在iOS 7.1上,您需要明确地设置各种button状态的标题,而在iOS 7.0上,设置UIControlStateNormal的标题也适用于其他button状态。

 // 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]; 

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

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