私たちの店舗を含むテーブルビューを作成したいと思います。UITableViewのセクションの動的タイトル
テーブルビューのデータは、JSONのJSONフレームワークを使用してNSDictionaryに解析するJSON文字列のwebappのAPIを通じて収集されます。
応答はビット次のようになります。
{
city = "Amsterdam";
code = erbur;
title = "Shop Lorem";
},
{
city = "Amsterdam";
code = kadap;
title = "Shop Ipsum";
},
{
city = "Rotterdam";
code = elaml;
title = "Shop Dolor";
},
{
city = "Delft";
code = lamla;
title = "Shop Sit";
},
{
city = "Rotterdam";
code = koppa;
title = "Shop Amet";
},
私の当初の計画は
titleForHeaderInSection:
でセクションに名前を付けるときに、このような何かを、辞書にと比べて、それらの配列を格納、都市ごとに配列を作成することでした。
if (section == 0) {
return @"Amsterdam"; }
else if (section == 1) {
return @"Roteterdam";
} Etc..
私たちはかなり急速に拡大しており、新しい都市で店を開くたびにアプリを更新したくありません。だから私は都市の配列をハードコードすることはできません。
新しい都市の新しい店舗が正しい都市のテーブルビューに表示されるようにする正しい方法はありますか?
ありがとうございます!
EDIT は、ここに私のコードです:
- (void)getLocData
{
SBJSON *parser = [[SBJSON alloc] init];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://foo.bar/locaties/lijst"]];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSArray *statuses = [parser objectWithString:json_string error:nil];
//the abive works
[statusesArray release];
statusesArray = statuses;
NSArray *cityNames = [statuses valueForKey:@"code"];
[locationCodes release];
locationCodes = cityNames;
- (void)viewDidLoad {
[super viewDidLoad];
[self getLocData];
//titel
self.title = NSLocalizedString(@"Locaties", @"Locaties - Steden");
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [locationCodes count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [locationCodes objectAtIndex:section];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
NSString *cityName = [locationCodes objectAtIndex:[indexPath section]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"code like %@", cityName];
NSArray *filteredShops = [statusesArray filteredArrayUsingPredicate:predicate];
NSDictionary *currentShop = [filteredShops objectAtIndex:[indexPath row]];
NSString *cellTitle = [currentShop objectForKey:@"title"];
cell.textlabel.text = cellTitle;
return cell;
}
件名はUITableViewにする必要があります。 –
おっと、そうです。編集.. –