【发布时间】:2014-06-11 06:17:15
【问题描述】:
在我的 iphone 项目中,我需要从 sqlite 获取数据并将其显示在 uipickerview 上,然后使用所选行的值填充另一个 uipickerview
在我的表 T_REGION 中有两列 ID 和 NAME
这就是我获取 REGION 列表的方式
- (NSArray*) getRegions
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"select ID,NAME from T_REGION"];
const char *query_stmt = [querySQL UTF8String];
NSMutableArray *resultArray = [[NSMutableArray alloc]init];
if (sqlite3_prepare_v2(database,
query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *name = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(statement, 1)];
[resultArray addObject:name];
}
sqlite3_reset(statement);
return resultArray;
}
else
{
NSLog(@"problem");
}
}
return nil;
}
如您所见,我无法将 ID 列填充到仅数组名称列返回,我需要 ID 列来填充另一个 uipickerview(您可能认为是国家 - 城市关系) 这是我的第一个问题
现在这就是我填充我的pickerview的方式
首先在 viewDidLoad 方法中我得到数组:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self getdata];
}
- (void)getdata {
dataRegion = [[NSArray alloc] initWithArray: [[DBHelper getSharedInstance:@"2_program.db"]getRegions]];
}
和我的 uipickerview 委托方法
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView.tag == 1)
return [dataRegion count];
else
return 0; //[countryTypes count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (pickerView.tag == 1)
return [dataRegion objectAtIndex:row];
else
return @"";
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component
{
if (pickerView.tag == 1) {
NSString *categoryType = [dataRegion objectAtIndex:[pickerView selectedRowInComponent:0]];
[btnBolge setTitle:categoryType forState:UIControlStateNormal];
}else {
}
}
我想要的是选择选项标签在 html 中的作用。我需要 2 列,但只显示 1 列并获取所选行的值而不是文本
1- 如何在 getRegions 函数中返回 2 列? 2- 如何在 uipickerview 中仅显示名称列并获取其选定行的 id 列?
【问题讨论】:
标签: ios objective-c sqlite uipickerview