以下にいくつかの JSON データがあり、それをテーブル ビューに表示したいと考えています。私はすでに静的データを使用して成功していますが、動的データを使用してそれを行いたいと考えています。これどうやってするの?
5 に答える
通常どおりに操作できるデータ構造(通常はネストされたNSArray、NSDictonary、NSNumber、NSStringインスタンス)を構築するJSONパーサーを使用する必要があります。これについては私の解決策を参照してください。
補足:非構造化データから構造化データを作成するなどの基本的な概念に慣れていない場合でも、これまでで最高のiPhoneアプリ(TM)を作成するのではなく、このようなものに慣れておく必要があります。
JSONデータをダウンロードして解析すると、静的データが効果的に得られます。テーブルビューを表示する前にJSONデータをダウンロードして解析し、配列またはディクショナリを使用して、テーブルビューのレイアウト方法を指定できます。JSONデータを値オブジェクトとして表現する独自の方法を考案する必要があります。この値オブジェクトをカウントして読み取り、テーブルビューに必要なデータを提供できます。テーブルビューを表示した後でデータを取得する場合は、データを取得したら、次のように呼び出すだけです。-[<tableViewName> reloadData]
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [[[[jsonObject valueForKey:@"companies"] objectAtIndex:0] valueForKey:@"Departments"]count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[[[[[jsonObject valueForKey:@"companies"] objectAtIndex:0] valueForKey:@"Departments"] objectAtIndex:0] valueForKey:@"Employees"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
label1.text = [[[[[[[jsonObject valueForKey:@"companies"] objectAtIndex:0] valueForKey:@"Departments"]objectAtIndex:section]valueForKey:@"Employees"]objectAtIndex:row]valueForKey:@"name"];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [[[[[jsonObject valueForKey:@"companies"] objectAtIndex:0] valueForKey:@"Departments"]objectAtIndex:section]valueForKey:@"name"];
}
背景色とテキストの配置でヘッダーを作成できます。
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
if (section == 0){
[headerView setBackgroundColor:[UIColor redColor]];
UILabel * headerLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, -5, headerView.frame.size.width, headerView.frame.size.height)];
headerLabel.textAlignment = UITextAlignmentCenter;
headerLabel.text =@"Current Schedule";
[headerLabel setFont:[UIFont fontWithName:@"Arial-ItalicMT" size:18]];
headerLabel.backgroundColor = [UIColor clearColor];
[headerView addSubview:headerLabel];
[headerLabel release];
return headerView;
}
}
非常に単純で、JSON パーサーを使用して JSON データを解析し、データを格納してNSMutableArray
、その配列をテーブル ビューに渡します。これがあなたに役立つことを願っています..