我正在尝试更改我在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是正确的方法吗?
答案 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方法!