私はNSDictionary
私たちが言うことはこのようなものです:
key: value:
name Bookshelf
movies Array containing: (Movie 1, Movie 2, Movie 3)
books Array containing: (Book 1, Book 2, Book 3)
music Array containing: (Music 1, Music 2, Music 3)
等々。今私がやろうとしているのは、このすべての情報を表示するtableViewを作成することですが、辞書キーが何であるかに基づいてさまざまなタイプのセルを使用します。たとえば、映画はcellForMovies
本を使用し、cellForBooks
音楽を使用cellForMusic
します。それぞれに独自のレイアウトがあります。
明らかに、私は単純化しすぎていますが、うまくいけば、私がやろうとしていることを理解してください。
セクションとセクションごとに異なるセルタイプを実行すれば、これを実現できますが、実行したくありません。たとえば、次のようなテーブルを作成できるようにします。
cellForBooks
cellForMovies
cellForMovies
cellForMusic
cellForBooks
など...あなたが私に指摘できるアイデアやリソースはありますか?私はiOS5のサポート(ストーリーボード)だけを気にしています。
ソリューションで編集:
助けてくれたすべての人、特に最後のピースをまとめてくれたatticusに大いに感謝します。
最終的に機能したのは、データの構造を辞書の配列に変更してKey: type Value: book/movie/music
から、各エントリにを追加することでした。データ構造は次のようになります。
Array[0]: Dictionary: [Key: type Value: book], [Key: name Value: Physics];
Array[1]: Dictionary: [Key: type Value: music], [Key: name Value: Rock];
次に、セルを構成するためにこれを行いました。
NSString *CellIdentifier = @"Cell";
NSDictionary *object = [self.listOfStuff objectAtIndex:indexPath.row];
if ([[object objectForKey:@"type"] isEqualToString:@"book"]){
CellIdentifier = @"BookCell";
}else if ([[object objectForKey:@"type"] isEqualToString:@"music"]){
CellIdentifier = @"MusicCell";
}else if ([[object objectForKey:@"type"] isEqualToString:@"movie"]){
CellIdentifier = @"MovieCell";
}
これらのそれぞれは、ストーリーボードに異なるテーブルビューセルを持っていました。cell.textLabel.text
これを行う必要があるように、組み込みのセル機能のいずれかを使用するかどうかを判断しました。
cell.textLabel.text = [object objectForKey:@"name"];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.opaque = NO;
これが将来誰か他の人に役立つことを願っています。