根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用
Posted
技术标签:
【中文标题】根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用【英文标题】:Save data from UIPickerView in NSUserDefaults based on user selection and call it in another ViewController Objective-C 【发布时间】:2021-05-24 11:17:10 【问题描述】:这是我的问题。 在一个 ViewController 中有两个 PickerView,它们的数据取自服务器并显示在 pickerView 的行上。
我想要做的是将用户选择的行上显示的数据(在本例中是一个 int)保存在 NSUserDefaults 中,并在函数内的另一个 ViewController 中使用它。
现在我以这种方式保存它:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1)
switch (row)
// Select a merchant and save data in UserDefaults and call it back when I send the message in SendMsgToOperatorViewController
case 1:
break;
case 2:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[0].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"");
case 3:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[1].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
default:
break;
else if (pickerView.tag == 2)
// code
我想根据用户选择的行将数据保存在 NSUserDefaults 中。这可以是正确的方法吗?
【问题讨论】:
【参考方案1】:更好的解决方案是 -
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1) && row > 1
// Skipping first 2 rows since qustion also skips it
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[row-2].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
else if (pickerView.tag == 2)
// code
【讨论】:
以上是关于根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用的主要内容,如果未能解决你的问题,请参考以下文章
根据匹配来自 coredata 的字符串选择 UIPickerview
UIPickerView 作为按钮操作并根据选择器的选定值设置文本字段的文本