0

曲のリストをローカルで再生する方法について混乱しています。ユーザーがリストから曲を選択し、中断したところからそのリストを再生し続けることができるアプリを作成しようとしています。別の曲を選択しない限り、その曲から先に再生されます。

AVFoundationを使用してオーディオファイルを再生する方法について複数のチュートリアルを読んで試しましたが、1つのサウンドしか再生できないようです。

MPMusicPlayerを試しましたが、ユーザーの音楽ライブラリからではなく、アプリに付属のファイルのみを再生したいので、機能しません。

これが私がそのチュートリアルからこれまでに持っているものです:

iPhoneミュージックプレーヤー

リスト内のローカルで曲を再生する方法について、行き詰まり、混乱しているように感じます。これを作成するにはどうすればよいですか?

4

1 に答える 1

1

これを必要とするアプリケーションを試す前に、おそらくUITableViewbeforeの使用を検討する必要があります。

私はこれをメモリから書き込んだので、テストしてすべてが機能することを確認してください...

ビューコントローラがテーブルビューデリゲートのメソッドを実装していることを確認し、UITableView次のようにobjと配列を宣言します。

@interface YourTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
  IBOutlet UITableView *theTableView;
  NSMutableArray *theArray;
}

ストーリーボードでそれらをリンクしていることを確認してください。theTableView上記のように表示されます。

アプリケーションをロードするときは、次のように記述します(どこかviewDidLoadで問題ありません)。

theArray = [[NSMutableArray alloc] initWithObjects:@"Item 1", @"Item 2", @"Item 3", nil];

テーブルビューにセクションがいくつあるかを宣言する必要はないので、今のところこれは後でまで無視してください。ただし、行数を宣言する必要があります。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return [theArray count]; // Return a row for each item in the array
}

次に、を描画する必要がありUITableViewCellます。簡単にするためにデフォルトのものを使用しますが、非常に簡単に独自のものを作成できます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  // This ref is used to reuse the cell.
  NSString *cellIdentifier = @"ACellIdentifier";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

  if(cell == nil)
  { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
  }

  // Set the cell text to the array object text
  cell.textLabel.text = [theArray objectAtIndex:indexPath.row];

  return cell; 
}

トラック名を表示するテーブルができたら、次の方法を使用できます。

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  if(indexPath.row == 0)
  {
    NSString *arrayItemString = [theArray objectAtIndex:indexPath.row];
    // Code to play music goes here...
  }
}

上部で宣言したので、配列に'NSMutableArrayを追加する必要はありません。NSStringたとえば、複数の文字列を保存する場合は、独自のオブジェクトを作成できます。配列アイテムを呼び出す場所を変更することを忘れないでください。

最後に、オーディオを再生するには、このSO回答の回答を使用してみてください。

また、必須ではありませんが、リストをハードコーディングするのではなく、SQLiteデータベースを使用して再生したいトラックをリストに保存することもできます。次にNSMuatableArray、データベースを呼び出した後にを入力します。

于 2013-02-26T14:24:19.197 に答える