の背後にあるロジックの一部を理解するのに苦労していUITableView
ます。MPMediaItemCollection
曲のキューとしてテーブルにデータを入力しています。私が達成しようとしているのは、現在再生中の曲と一致するインデックス パスのセルのアクセサリ ビューとして、現在再生中のインジケーターを表示することです。
私はもともと次のようにこれを試しました:
if (indexPath.row == [mutArray indexOfObject:[mainViewController.musicPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyTitle]]) {
UIImageView *playButtonView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"PlayButton.png"]];
[cell setAccessoryView:playButtonView];
}
これは、実際には常に である現在再生中のアイテムに対して正常に機能しますobjectAtIndex:0
。しかし、私が理解していないのは、私のテーブルが、結合された可視セルの高さごとにこのインデックスを定義しているように見える理由です。
これをもっと明確に説明してみましょう。テーブルの高さが 600px で、コンテンツの高さが 1800px だとしましょう。これにより、インジケーターはコンテンツの高さの約 600 ピクセルごとに追加されます。
ここで、最初に考えたのは、これは曲の名前に基づいてインデックスを判断するためのコードに問題があるということでした。そのため、次のように変更してみました。
if (indexPath.row == 0)
しかし、これは同じ結果を生み出します!
このスクリーンショットは、私が話していることを説明するのに役立ちます。
indexPath0
それで、現在表示されているセルを参照するのではなく、テーブル全体を参照して最初のセルのみとしてテーブルを扱うようにするためにできることはありますか?