セクションを追加するフローがどのように機能するかを基本的な用語で誰か説明してもらえますか?
現在、単一のセクションUITableView
に取り込んでいるオブジェクトの配列がありますが、それらのオブジェクトの共有「カテゴリ」プロパティに基づいて、それらを複数のセクションに分割したいと考えています。API からオブジェクトのリストを取得しているため、各カテゴリの数が事前にわかりません。
よろしくお願いします。
セクションを追加するフローがどのように機能するかを基本的な用語で誰か説明してもらえますか?
現在、単一のセクションUITableView
に取り込んでいるオブジェクトの配列がありますが、それらのオブジェクトの共有「カテゴリ」プロパティに基づいて、それらを複数のセクションに分割したいと考えています。API からオブジェクトのリストを取得しているため、各カテゴリの数が事前にわかりません。
よろしくお願いします。
UITableViewDataSource プロトコルを使用する必要があります。オプションのメソッドの 1 つを実装する必要があります。
//Optional
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Default is 1 if not implemented
NSUInteger sectionCount = 5; //Or whatever your sections are counted as...
return sectionCount;
}
次に、セクションごとに行がカウントされていることを確認します。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 4; //This will return 4 rows in each section
}
各セクションのヘッダーとフッターに名前を付ける場合:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return @"";
}// fixed font style. use custom view (UILabel) if you want something different
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return @"";
}
最後に、セルを適切に実装してください。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)
NSUInteger section = [indexPath indexAtPosition:0];
NSUInteger rowInSection = [indexPath indexAtPosition:1];
//Do your logic goodness here grabbing the data and creating a reusable cell
return nil; //We would make a cell and return it here, which corresponds to that section and row.
}
折りたたみ可能なセクションは、まったく別の獣です。UITableView をサブクラス化するか、CocoaControls で見つける必要があります。