更改UISegmentedControl文本

时间:2012-11-26 09:26:01

标签: ios xcode

我正在尝试更改我在IB中制作的UISegmentedControl的文本。这是代码

[changeButton removeAllSegments];
[changeButton insertSegmentWithTitle:NSLocalizedString(@"Traffic",@"traffic string")  atIndex:0 animated:YES];
[changeButton insertSegmentWithTitle:NSLocalizedString(@"Satellite",@"satellite string")  atIndex:1 animated:YES];

但没有任何反应:我总是看到IB为我提供的默认标签(“First”和“Second”)。 当然,我把IBOUtlet放在了我的.h:

 __weak IBOutlet UISegmentedControl *changeButton;

我错过了什么?一般来说,当我在IB中创建一个控件时,为了以编程方式访问它,将IBOutlet放入.h是正确的方法吗?

3 个答案:

答案 0 :(得分:1)

__weak

哦等等......如果它很弱,它会在范围结束时解除分配并被取消(当创建它的方法返回时)。省略__weak,它应该没问题。

答案 1 :(得分:0)

仅当您设置属性和名为changeButton的ivar时,这才有意义。 OP的目前尚不清楚,所以放在这里以防万一。

看起来你正在混合属性和ivars。

changeButton ivar与属性changeButton不同。

删除行......

 __weak IBOutlet UISegmentedControl *changeButton;

来自.h

并将代码更改为...

[_changeButton removeAllSegments];
[_changeButton insertSegmentWithTitle:NSLocalizedString(@"Traffic",@"traffic string")  atIndex:0 animated:YES];
[_changeButton insertSegmentWithTitle:NSLocalizedString(@"Satellite",@"satellite string")  atIndex:1 animated:YES];

答案 2 :(得分:0)

解决。 问题是我在init方法中编写了上述指令。他们应该进入viewDidLoad方法!