1

我有一个UIPickerView显示项目数组的。当我选择一个项目时,它可以传递给我所有的视图控制器。现在我的问题是在移动到不同view controllers并返回后UIPIckerView它显示第一个数组项目而不是我选择的项目。如何查看所选项目?

//in viewDidLoad()
itemsArray = [[NSArray alloc] initWithObjects:@"5", @"10", @"20", @"30", @"50",@"100", nil];

// if i select 20 and moved to other pages of my controllers and 
// return to the UIPickerView i can see the 5 as selected not the 20

有什么建议么?

4

4 回答 4

2

嗨,使用 NSUserDefaults 来保存当前选定的值,使用 ,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithInt:albumCount] forKey:@"AlbumCount"];
[defaults synchronize];

为了取回清酒,

albumCount = [defaults integerForKey:@"AlbumCount"];
于 2013-08-21T13:44:48.363 回答
1

您需要将选定的值存储在某处,或者作为视图控制器或模型上的属性,或者在中心位置,如NSUserDefaults.

然后,当您返回到该视图控制器时,UIPickerView您可以使用它 - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated来设置值。

于 2013-08-20T14:41:58.753 回答
1

根据您想要实现的目标,以及您如何接近打开一个进一步的视图,它可能就像声明@property int currentIndex、设置currentIndex = indexForSelectedItem然后在您viewWillAppear使用它来提醒您的视图最后选择的是什么一样简单。

于 2013-08-20T14:42:15.913 回答
1

可以用不同的方式做到这一点

  1. 在不同的 VC 中使用传递值或引用
  2. 将所选值存储在整个运行时持久的其他位置并使用它

喜欢

  • NSUserdefaults,
  • 在单例实例中[坏主意,内存一直保留,但仍然是一个选项]
  • SQLite DB [好的好的,仅在这种情况下仍然很难]
  • coredata [为此目的而复杂化]
  • 在文件中[从文件中写入和读取操作]
于 2013-08-20T14:49:49.070 回答