gpt4 book ai didi

iphone - UIPickerView根据数据显示数据

转载 作者:行者123 更新时间:2023-12-03 21:03:17 25 4
gpt4 key购买 nike

我正在为 iPhone 开发一个应用程序(我的第一个应用程序),我想使用两个 UIPickerView 来显示一些数据。第一个 UIPickerView 将显示汽车品牌列表(例如宝马、梅赛德斯、福特等...),第二个 UIPickerView 将显示型号,具体取决于您在第一个 UIPickerView 中选择的 UIPickerViewItem。

我遇到的问题是没有设置 UIPickerView,这已经完成了。

我想知道如何从某种数据存储(可能是 sqlite、core-data...?不确定两者是如何工作的)中填充两个 PickerView,而且,第二个 PickerView 应该只填充第一个 PickerView 一次用户选择了一件商品,因此仅显示该品牌的型号。

我希望你理解,因为我真的不知道如何做到这一点(我通常只进行网络开发,使用 PHP 和 MySQL 非常容易......);)

提前致谢!迈克

最佳答案

核心数据是必经之路,但学习曲线很陡峭。你应该留出相当多的时间来学习它。

使用 plist 更容易,或许也足以满足您的目的。这些是 Apple 特定的 xml 文件,结构非常简单。您可以直接在 Xcode 中编辑它们,并且格式非常透明。

然后,您可以立即从 plist 加载所有数据,并根据第一个选择器中的选择填充第二个选择器。

或者,您可以使用 JSON 文件。这些甚至更简单,作为一名网络程序员,您可能熟悉这些。

一些提示:

您的数据应具有以下结构:字典数组;每个字典都有一个品牌键和另一个数组(型号列表)的键。该子数组是一个字典,其中包含名称键(如果您的应用程序中需要它,可能还有更多键)。

您可以像这样加载名为“Data.plist”的 plist 文件(JSON 是模拟的):

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSArray *data = [NSArray arrayWithContentsOfFile:path];

现在您可以获得这样的品牌列表(假设您的品牌名称键是“name”):

NSArray *brands = [data valueForKeyPath:@"name"]; 

以及品牌品牌列表:

NSArray *models = [[[data filteredArrayUsingPredicate:[NSPredicate
predicateWithFormat:@"name = %@", @"Ford"]] objectAtIndex:0]
valueForKey:@"models"]);

要对第一个选择器 View 的选择使用react,请确保您的 View Controller 是选择器 View 的委托(delegate)并覆盖 pickerView:didSelectRow:inComponent:

您可以通过分配标签并在回调方法中检查它们来区分这些委托(delegate)方法中的选择器。

这是您的 plist 结构的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>name</key>
<string>Ford</string>
<key>models</key>
<array>
<string>Mustang</string>
<string>Capri</string>
</array>
</dict>
<dict>
<key>name</key>
<string>VW</string>
<key>models</key>
<array>
<string>Polo</string>
<string>Golf</string>
</array>
</dict>
</array>
</plist>

希望这有帮助。

关于iphone - UIPickerView根据数据显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com