質問: NSNotFound ){ [self.movieList insertObject:moviePlayerController atIndex:indexPath.row]; } } return cell; } ```
回答: cellForRowAtIndexPathは表示対象となるdataSourceの件数分呼ばれます。 なので、cellForRowAtIndexPathの中でdataSource(今回のケースではurls)をループさせる必要はありません。 あらかじめuriをインスタンス変数等で保持しておき、各行に応じた値を取得して設定した方が良いです。 ``` - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"movieCell" forIndexPath:indexPath]; // セルにURIを保持 ※本来はUITableViewCellにuriというプロパティはありません。 cell.uri = _urls[indexPath.row]; return cell; } ``` この辺りはUITableViewを使用する上では当然とされる知識だと思いますので、 差し出がましいですが、一度調べてみることをお勧めします。 ※分かりやすいサンプルを解説付きで載せてくださっているブログがたくさんあります。 ----- 追記 ----- こちらの質問の主旨からは少し外れるかもしれませんが、回答に誤解を与えてしまいそうな記述がありましたので少し訂正させてください。 > > cellForRowAtIndexPathは表示対象となるdataSourceの件数分呼ばれます。 > > > と簡単に書いてしまいましたが、実際は異なります。 細かい説明は割愛させていただきますが、UITableViewはメモリを効率よく使えるように、 セルを再利用するようになっています。 なので「dataSourceが100件あるから初期表示時にcellForRowAtIndexPathを100回呼んで終わり」ではなく、画面表示後もTableViewのスクロールにあわせて何度も呼ばれます。 numberOfRowsInSectionで適切な値を返していれば、 indexPathがdataSourceから溢れる事はないため、下記の取り方自体は問題ありません。 > > _urls[indexPath.row] > > >