0

私のアプリでは、Artistをロードし、に入力しarrayOfArtistsて表示しUITableViewます。

だから私は自分UITableViewのインデックスを作成する必要があります。そのため、iOSの組み込みの音楽アプリのようにアーティストの配列をアルファベット順に並べ替える必要があります。

ここに画像の説明を入力してください

上の写真のように、でインデックスを付けることができUITableViewますTitle

そのため、ArtistArrayをアルファベット順に並べ替える必要があります。

どうやってやるの?

これが私がiPodLibraryからArtistをロードするいくつかのコードです。

ViewDidLoad

    MPMediaQuery *query = [MPMediaQuery artistsQuery];
    query.groupingType = MPMediaGroupingAlbumArtist;
    self.arrayOfArtist = [query collections];

CellForRowAtIndexPath

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[[self.arrayOfArtist objectAtIndex:indexPath.row] representativeItem] valueForProperty:MPMediaItemPropertyArtist]];

sectionForSectionIndexTitle

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
        return [self.arrayOfArtist count];
}

そして、私は私のインデックスを作成するためTitleHeaderにアルファベット順で表示したいと思います。どうやってやるの?みんなありがとう。UITableViewUITableView

4

2 に答える 2

3

セレクターを使用してアルファベット順に並べ替えます。

NSArray *sortedArray=[self.arrayOfArtist sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
于 2013-01-29T18:13:15.313 に答える
1

X-開発者-X -

実装することで、あなたが望むものとほぼ同じものが得られました

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

sectionIndexTitlesForTableView は画面の右端にインデックス文字を生成し、titleForHeaderInSection はセクション間のヘッダーを生成します。結果のスクリーン キャプチャを添付しました。テーブルビューのいくつかの GUI 設定を変更することで、完全に同一にすることができると確信しています。私が見た違いは、ヘッダー バーがやや透明で、その中の文字が白いことです。

私の変わった音楽の趣味を明らかにするスクリーン キャプチャ:

于 2013-03-29T08:02:29.153 に答える