0

リンクhttp://www.devx.com/wireless/Article/43374を使用して、アルファベット順のセクション ヘッダーを実装しました。

使い勝手が良いです。

このロジックを使用して、最初の文字をインデックスとして取得しました

  // To implement indexes and section headers
  contactsArray = [[NSMutableArray alloc] init];
  for(int i=0; i< tableViewArray.count ; i++)
  {
        Contact *contact = [tableViewArray objectAtIndex:i];
        [contactsArray addObject:contact.name];
  }



 contactIndex = [[NSMutableArray alloc] init];
  for (int i=0; i<[contactsArray count]; i++){
        //---get the first char of each contactName---
        char alphabet = [[[contactsArray objectAtIndex:i] uppercaseString] characterAtIndex:0];

    NSString *firstChar = [NSString stringWithFormat:@"%C", alphabet];

    //---add each letter to the index array---
    if (![contactIndex containsObject:firstChar])
    {            
          [contactIndex addObject:firstChar];
    }        

}

ただし、連絡先の場合は1,2,3 を返します...

ここに画像の説明を入力

But need to display # instead of all numaerical values headers

4

2 に答える 2

0
if (alphabet >= '0' && alphabet <= '9') alphabet = '#';
于 2012-11-09T10:56:33.280 に答える
0

NSNumberFormatterを使用して、NSString が数値かどうかを確認します

// To implement indexes and section headers
  contactsArray = [[NSMutableArray alloc] init];
  for(int i=0; i< tableViewArray.count ; i++)
  {
        Contact *contact = [tableViewArray objectAtIndex:i];
        [contactsArray addObject:contact.name];
  }



 contactIndex = [[NSMutableArray alloc] init];
  for (int i=0; i<[contactsArray count]; i++){
        //---get the first char of each contactName---
        char alphabet = [[[contactsArray objectAtIndex:i] uppercaseString] characterAtIndex:0];

    NSString *firstChar = [NSString stringWithFormat:@"%C", alphabet];

   NSNumberFormatter *testFormatter = [[NSNumberFormatter alloc] init];

  if(nil == [testFormatter numberFromString: firstChar]){

      firstChar = @"#";
  }

    //---add each letter to the index array---
    if (![contactIndex containsObject:firstChar])
    {            
          [contactIndex addObject:firstChar];
    }       
}
于 2012-11-09T11:04:52.107 に答える