2016-07-09 7 views
1

これは私の配列であり、セクションWiseでこのTableViewに設定されています。この配列は動的に値が増減するように設定されています。ヘッダーセクションのタイトルSectionHeaderTitleを使用してTableViewで配列を設定する方法は?

同じ日付値の

設定した日付が一つのセクションに含まれています。

だから私はセクションワイズテーブルでデータを設定するTableViewの方法は何ですか?

({ 
    date = "2016-07-09 06:46:00 +0000"; 
    heartrate = 89; 
}, 
    { 
    date = "2016-07-07 06:46:00 +0000"; 
    heartrate = 88; 
}, 
    { 
    date = "2016-07-06 06:46:00 +0000"; 
    heartrate = 90; 
}, 
    { 
    date = "2016-07-09 06:46:00 +0000"; 
    heartrate = 102; 
}, 
    { 
    date = "2016-07-07 06:46:00 +0000"; 
    heartrate = 98; 
}, 
    { 
    date = "2016-07-07 06:46:00 +0000"; 
    heartrate = 97; 
}) 

は、ここで私は、画像を設定し、私はセクション賢明な行セットで、次のように設定したいです。

enter image description here

+0

は、あなたがしようとしているものをいくつかのコードを投稿しますか? –

+0

が、これは... –

答えて

1

次のようにやろう(これはあなたの問題を解決することを願っています) -

1-グローバルNSMutableArrayつまりを取りますresultArray

2-(も動的配列のサイズで動作)、あなたの配列を作るこれらのコード行を追加します -

resultArray = [NSMutableArray new]; 

NSArray *groupsDate = [yourArray valueForKeyPath:@"@distinctUnionOfObjects.date"]; 
    // for sorted array- [[yourArray valueForKeyPath:@"@distinctUnionOfObjects.date"]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

for (NSString *groupDateValue in groupsDate) 
{ 
    NSMutableDictionary *newDict = [NSMutableDictionary new]; 

    [newDict setObject:groupDateValue forKey:@"date"]; 

    NSArray *groupRate = [yourArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"date = %@", groupDateValue]]; 

    [newDict setObject:groupRate forKey:@"heartrate"]; 

    [resultArray addObject:newDict]; 
} 

NSLog(@"result %@",resultArray); 

今これはtableViewdataSource/Delegate methods-

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    return resultArray.count; 

} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

    NSArray *rowC=[[resultArray objectAtIndex:section]valueForKey:@"heartrate"]; 

    return rowC.count; 

} 
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 


    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 30)]; 

    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(3, 0, tableView.frame.size.width/2-5, 30)]; 

    [label1 setFont:[UIFont fontWithName:@"HelveticaNeue-Medium" size:16]]; 

    [label1 setTextColor:[UIColor whiteColor]]; 

    [label1 setText:[self getDateFromString:[[resultArray valueForKey:@"date"]objectAtIndex:section]]]; 

    [label1 setTextAlignment:NSTextAlignmentLeft]; 

    [view addSubview:label1]; 

    [view setBackgroundColor:[UIColor darkGrayColor]]; 

    return view; 

} 

-(NSString *)getDateFromString:(NSString *)string 
{ 

    NSString * dateString = [NSString stringWithFormat: @"%@",string]; 

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"]; 
    NSDate* myDate = [dateFormatter dateFromString:dateString]; 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"dd MMM yyyy"]; 
    NSString *stringFromDate = [formatter stringFromDate:myDate]; 

    return stringFromDate; 
} 


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 

     cell.textLabel.text=[NSString stringWithFormat:@"Heart Rate = %@",[[[[resultArray objectAtIndex:indexPath.section]valueForKey:@"heartrate"] valueForKey:@"heartrate"] objectAtIndex:indexPath.row]]; 

    cell.detailTextLabel.text=[NSString stringWithFormat:@"%@",[[[[resultArray objectAtIndex:indexPath.section]valueForKey:@"heartrate"] valueForKey:@"date"] objectAtIndex:indexPath.row]]; 


    return cell; 

} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

NSLog(@"date=%@ and heartRate= %@",[[[[resultArray objectAtIndex:indexPath.section]valueForKey:@"heartrate"] valueForKey:@"date"] objectAtIndex:indexPath.row],[[[[resultArray objectAtIndex:indexPath.section]valueForKey:@"heartrate"] valueForKey:@"heartrate"] objectAtIndex:indexPath.row]); 
} 

を追加します出力画面 -

enter image description here

0

1)まず、あなたはユニークな値が含まれているあなたのセクションタイトルのための1つの配列を作成する必要があります。配列内で値を比較することによって、独自の値を実行できます。

2)セクションの辞書を含む2番目の配列を作成する必要があります。同様のセクション1は2行です

3)次に、tableviewデータソースメソッドを実装する必要があります。

– tableView:cellForRowAtIndexPath: // required method 

– tableView:numberOfRowsInSection: // required method 

– numberOfSectionsInTableView: 

– tableView:titleForHeaderInSection: 
+0

はい、あなたは正しいが、どのように節賢明なデータがテーブルビューに保存するためにあなたの問題を解決する私のanswer.Hope下に確認してください? –

+0

セクションデータを含む1つの配列を作成します。セクション名はキーとして格納され、値にはセクションデータが格納されます。 –

+0

データ構造を作成する方法については、このリンクを参照してください。http://www.appcoda.com/ios-programming-index-list-uitableview/ –

0

すでにテーブルビューで行にデータを追加していることを前提としています。

セクションビューには、次の機能を使用します。

func numberOfSectionsInTableView(tableView: UITableView) -> Int{} 

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?{} 

これらは、デフォルトでは、セクションをテーブルビューで表示するための機能です。 (データ構造に従って)日付キーをフェッチし、セクションビューのタイトルと心拍数をセクションの行に追加します。あなたがこれを理解していない場合は私に応じて私の答えを変更することを教えてください:)

これはあなたを助けてくれることを願っています。

+0

節賢明なデータにはい、あなたは正しいが、どのようには、テーブルビューに保存しますか?私はあなたを取得していない午前 –

+0

@sanandiyavipul。詳細を説明したり、コードでいくつかの例を投稿して、正確な答えを教えてください。 –

+0

が表示されます。画像が添付されました。 –

0

あなたは、この使用して、データI配列の両方を区別することができます:あなたは日付と心拍数の両方を区別し、テーブルビューのデリゲートとデータソースを使用することができ、このことにより

for(int i=0; i<[array count]; i++){ 
NSDictionary *dic=array[i]; 
[dateArray addObject:[dic valueForKey:@"date"]]; //date array is mutable array 
[heartRateArray addObject:[dic valueForKey:@"heartrate"]]; //mutable array 
} 

を。

関連する問題