我正在尝试构建一个与 PDF
数据库一起工作的应用程序。我需要让应用程序查看所有存储的文件(PDF)并将某些文件拉出,对照数据库检查,然后显示 UIPicker< 上可用的 PDF 列表
。
我的第一步是应用程序检查文件并创建一个选择器轮盘,该轮盘已填充了目录中有数据的国家/地区。
为了完成这项工作,我为文件名创建了一个标准格式:“Country-Airfield-Plate Name-Date.pdf”,例如“英国-伦敦希思罗机场-ILS DME NDB 27-100214.pdf”。我首先在句号处拆分此文件名以获得两个字符串:“UK-London Heathrow-ILS DME NDB 27”和“pdf”,然后我们在连字符处拆分标题以获得“UK”、“London Heathrow” ' 和 'ILS DME NDB 27'。
应用程序将检查国家信息的第一个字符串,然后检查机场的第二个字符串,然后显示相应机场的第三个字符串的列表。
我如何首先从数据库中获取特定字段的数据,例如。 country 制作一个 NSArray
表单该数据并将该 NSArray
加载到 UIPickerView
,然后在 UIPickerView
中使用该数组 Delegate
和 Datasource
方法?
如果您没有任何 Web 服务运行并且您自己处理文档。您可以硬编码一个 .plist 文件并将其放在您的网站上,每次应用打开时下载这个小 plist 文件,加密并保存到您的文档目录。
plist 基本上是一个带有对象和键的 NSDictionary
。
所以你的 plist 结构看起来像这样:
{
Countries = (
{
Airfields = (
{
Code = JNB;
Plates = (
{
Title = "late 1";
URL = "http://www.airport.com/za/airfield/plate1/document.pdf";
}
);
Title = "OR Tambo";
}
);
Title = "South Africa";
}
);
}
上面的示例在每个数组中仅包含 1 个对象,在您的情况下会更多。
然后使用下面的 UIPickerView
委托(delegate)假设 button.tag 被调用来更改 pickerview.tag 并为 pickerview 显示正确的数组:
- (NSInteger)numberOfComponentsInPickerViewUIPickerView *)pickerView;
{
return 1;
}
- (NSInteger)pickerViewUIPickerView *)pickerView numberOfRowsInComponentNSInteger)component;
{
return [[self returnCorrectArrayForButton:pickerView.tag] count];
}
- (NSString *)pickerViewUIPickerView *)pickerView titleForRowNSInteger)row forComponentNSInteger)component
{
return [[[self returnCorrectArrayForButton:pickerView.tag] objectAtIndex:row] valueForKey"Title"];
}
// Handle these errors where user can click on any button. Airfields will be empty if no country selected. Plates will be empty when no Airfields selected. After loading all arrays, pressing random buttons might give wrong information.
- (void)pickerViewUIPickerView *)pickerView didSelectRowNSInteger)row inComponentNSInteger)component
{
if (pickerView.tag == 1) {
_airfieldArray = [[_countryArray objectAtIndex:row] objectForKey"Airfields"];
[_countryButton setTitle:[[_countryArray objectAtIndex:row] valueForKey"Title"] forState:UIControlStateNormal];
} else if (pickerView.tag == 2) {
_plateArray = [[_airfieldArray objectAtIndex:row] objectForKey"lates"];
[_airfieldButton setTitle:[[_airfieldArray objectAtIndex:row] valueForKey"Title"] forState:UIControlStateNormal];
} else if (pickerView.tag == 3) {
// Show PDF in webview for selected plate
[_plateButton setTitle:[[_plateArray objectAtIndex:row] valueForKey"Title"] forState:UIControlStateNormal];
NSString *urlString = [[_plateArray objectAtIndex:row] valueForKey"URL"];
NSLog(@"Selected Plate PDF URL : %@", urlString);
}
}
- (NSArray *)returnCorrectArrayForButtonNSUInteger)buttonIndex
{
if (buttonIndex == 1) {
// Return Countries array
return _countryArray;
} else if (buttonIndex == 2) {
// Return Airfield array
return _airfieldArray;
} else if (buttonIndex == 3) {
// Return Plates array
return _plateArray;
}
return nil;
}
关于ios - 将数据加载到 UIPIckerView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24755475/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |