iOS程序在应用程序中以制表符分隔显示数据库内容

时间:2013-04-16 19:26:25

标签: ios database tabs nsmutablearray

我有一个程序连接到MAMP服务器并选择我的数据库并在Xcode模拟器中显示内容。现在我有两个标签,两者的数据相同。我希望选项卡能够分隔要在每个选项卡中显示的数据类型。 (1个标签应显示葡萄酒的种类,其他显示葡萄酒国家)

我认为我必须创建一个拉动数据的类(NSObject的子类),然后是另一个带有可变数组的视图控制器,该数组包含每个选项卡所需的数据,但我该如何做?如何创建MutableArray?

这里是我的TableViewController.m中的代码,它使用JSON连接到我的数据库:
- (void)viewDidLoad {     [super viewDidLoad];     NSURL * url = [NSURL URLWithString:@“http:// [localhost]:8888 / wine.php”]; //修改此项以匹配您的网址。

NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url]; // Pulls the URL
NSLog(jsonreturn); // Look at the console and you can see what the restults are

NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;

// In "real" code you should surround this with try and catch
NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
if (dict)
{
    rows = [[dict objectForKey:@"wine"] retain];


}
NSLog(@"Array: %@",rows);

[jsonreturn release];

}

然后我为tableview创建了另一种方法:

pragma mark - 表视图数据源

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [rows count]; }

//自定义表格视图单元格的外观。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}


// Configure the cell.
NSDictionary *dict = [rows objectAtIndex: indexPath.row];

//cell.textLabel.text = [dict objectForKey:@"id"];
//cell.textLabel.text = [dict objectForKey:@"wineColor"];
//cell.textLabel.text = [dict objectForKey:@"wineGrape"];
cell.textLabel.text = [dict objectForKey:@"wineCountry"];
cell.detailTextLabel.text = [dict objectForKey:@"id"];

return cell;

}

有了这个,同样的数据(葡萄酒国家)同时显示在葡萄和葡萄酒中。国家标签。如何创建一个可变数组来获取每个选项卡中应显示的数据?

1 个答案:

答案 0 :(得分:0)

你需要第二个(Grape)视图控制器为它自己的tableview实现tableView数据源和委托方法,但你不需要另一个数组,你可以使用你的JSON字典,但是在你的标签中添加正确的文本葡萄的细胞(在cellForRowAtIndexPath UITableView数据源方法中)。您可以使用当前已注释掉的上面的行来填充“Grape”表格视图的单元格中的标签:

//cell.textLabel.text = [dict objectForKey:@"wineColor"];
//cell.textLabel.text = [dict objectForKey:@"wineGrape"];

您可以添加自定义UITableViewCell或使用字幕样式并将字幕设置为颜色。