2013-08-20 58 views
1

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

有什么建议吗?

+1

显示,如何在视图控制器之间传递数据。 – Kepler

回答

1

可以在不同VC做以不同的方式

  1. 使用按值传递或引用
  2. 商店这是整个运行时持续性和其他一些地方选择的值用它

  • NSUserDefaults的,
  • 内部单一实例[坏主意,记忆保留了所有的时间,但 仍是一个选项]
  • 的SQLite DB [OK OK,仍难单独这种情况下]
  • coredata [在为此sofisticated]
  • 在一个文件[写入和从文件操作读]
1

您需要将选定的值存储在某个位置,既可以作为视图控制器或模型的属性,也可以存储在中心位置,如NSUserDefaults

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

1

取决于你想要什么样的实现,以及如何你接近打开另一种看法认为它可能是因为用它来提醒你的看法是什么选择的最后声明@property int currentIndex,设置currentIndex = indexForSelectedItem,然后在你的viewWillAppear一样简单。

2

您好NSUserDefaults的使用用于保持使用当前选择的值,

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

为retri因此,

albumCount = [defaults integerForKey:@"AlbumCount"];