【问题标题】:Saving segmented controller position保存分段控制器位置
【发布时间】:2017-10-17 11:49:26
【问题描述】:

我面临一个问题,即我的分段控制器在关闭应用程序并再次打开后没有保存其位置。

我的代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.segmentedControlButtonStyle addTarget:self action:@selector(changeButtonStyle:) forControlEvents:UIControlEventValueChanged];

}

- (IBAction)changeButtonStyle:(id)sender {

    NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"];
    NSInteger selectedSegmentedControlerIndex = self.segmentedControlButtonStyle.selectedSegmentIndex;

    if (sharedDefaults) {
        [sharedDefaults setInteger: selectedSegmentedControlerIndex forKey:@"MySelectedButtonStyleKey"];
        [sharedDefaults synchronize];
    }
}

有趣的是,NSUserDefaults 实际上保存了正确的索引,因为从我上面提供的方法中,如果我更改按钮样式,它会在再次关闭和打开应用程序后保持更改,因为我可以看到它,但分段控制器本身没有显示正确段。

我不确定为什么会发生这种情况,因为我在每次分段更改后进行同步,但分段控制器仍保持其默认位置。

【问题讨论】:

  • 你在哪里将它设置为保存的索引?
  • 在 viewDidLoad 中你必须读取 userDefaults 并为分段控件设置正确的索引
  • 您能否将代码发布到您实际使用MySelectedButtonStyleKey 设置分段控件的选定状态的位置?

标签: ios objective-c uisegmentedcontrol


【解决方案1】:

在视图确实加载了你应该添加代码来设置你保存的段

NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"];
int mySegment = [sharedDefaults integerForKey:@"MySelectedButtonStyleKey"];

if(mySegment) {
    self.segmentedControlButtonStyle.selectedSegmentIndex = mySegment;
}

【讨论】:

  • 接受答案会很好:)
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
相关资源
最近更新 更多