我在IB中创建了一个UISegmentedControl并为其添加了四个段。我现在要做的是从我的数据模型中存储的值恢复控件的选择。
是否可以遍历UISegmentedControl的段并设置特定索引的selectedSegmentIndex?
我对UISegmentControl的动作处理程序如下所示:
-(IBAction)onAmountSelectorChange:(id)sender
{
NSString *s = [amountSelector titleForSegmentAtIndex:[amountSelector selectedSegmentIndex]];
int v = s.intValue;
_nameGenParams.amount = v;
}
...现在我需要撤消操作,以便从_nameGenParams.amount恢复正确的索引。
更新:尝试使用以下方法将索引存储到NSUserDefaults:
NSInteger i = amountSelector.selectedSegmentIndex;
[[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"amountSelectorSegIndex"];
但这似乎不起作用。我在我的动作处理程序中执行此操作,并使用以下命令在viewDidLoad中恢复它:
NSUInteger amountSelectorSegIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"amountSelectorSegIndex"];
amountSelector.selectedSegmentIndex = amountSelectorSegIndex;
UISegmentedControl没有设置为我存储的索引我做错了什么?
更新2:我在我的界面中将UISegmentControl定义为IBOutlet:
@property (strong, nonatomic) IBOutlet UISegmentedControl *amountSelector;
在我的控制器类中,我合成它:
@synthesize amountSelector;
任何人都可以告诉我为什么设置/获取valueSelector的值在这里不起作用(在我使用以下命令恢复索引后它仍然为0
amountSelector.selectedSegmentIndex = amountSelectorSegIndex;
答案 0 :(得分:0)
实际上selectedSegmentIndex
是UISegmentedControl
当需要恢复时,你想做类似
的事情NSUInteger preservedSegmentedIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"preservedSegmentedIndex"];
segmentedControl.selectedSegmentIndex = preservedSegmentedIndex;
答案 1 :(得分:0)
NSInteger i = amountSelector.selectedSegmentIndex;
[[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"amountSelectorSegIndex"];
也是正确的,但是看天气我是否有正确的价值。