-1

我试过搜索,但到目前为止我似乎找不到答案。

目前,我使用原型单元动态填充我的数据。

我需要根据日期对单元格进行动态分组。

假设在 2001 年 1 月 1 日,我有 3 行。2001 年 2 月 1 日,我有 5 行。我似乎找不到显示如何动态分组单元格的指南或示例。以下是我的部分代码。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
 #warning Potentially incomplete method implementation.
 // Return the number of sections.
 return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
// Return the number of rows in the section.
return [someArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
static NSString *CellIdentifier = @"cell";
IssuesViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[IssuesViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellIdentifier];
}

// Configure the cell...  
currentSomething = [[Something alloc] init];
currentSomething = [somethingDiscovered objectAtIndex:indexPath.row];

cell.typeLabel.text = currentSomething.type;
cell.titleLabel.text = currentSomething.title;
cell.begDateLabel.text = currentSomething.begDate;

return cell;
}

2013 年 8 月 23 日更新:

现在我可以对其进行动态分组,但是,在显示单元格的正确数据时遇到了问题。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
 #warning Potentially incomplete method implementation.
 // Return the number of sections.
 return return [someDate count]; //someDate is an array that stores dates
}
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
// set title of section here
return [someDate objectAtIndex:section]; //set the title of each section as a date
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
// Return the number of rows in the section.
return [[someIssues objectAtIndex:section] count]; //some issues hold data to be displayed in the cell.
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
static NSString *CellIdentifier = @"cell";
IssuesViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[IssuesViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellIdentifier];
}

// Configure the cell...  
currentSomething = [[Something alloc] init];
currentSomething = [somethingDiscovered objectAtIndex:indexPath.row];

cell.typeLabel.text = currentSomething.type;
cell.titleLabel.text = currentSomething.title;
cell.begDateLabel.text = currentSomething.begDate;

return cell;
}

例如,对象 A、B、C、D、E、F、G、H、I、J、K。我有 4 个部分。section[0] 假设显示 A、B、C、D、E、F、G。 Section[3] 假设显示 H、I、J、K。

但是,现在,它只在 [0] 部分中显示 A、B、C、D、E、F、G。A、B、C、D,在第 [3] 节中。请协助。

解决方案:

someIssue = [[someIssues objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
4

1 回答 1

2

这样做的一种方法是拥有一个结构来填充您的 tableview,并且每当它被修改时,只需重新加载您的所有 tableview 或只是它的一部分。

– reloadData //Reload all of your table view's data
– reloadRowsAtIndexPaths:withRowAnimation: //Reload some rows
– reloadSections:withRowAnimation: //Reload some defined sections

有关如何使用这些方法的更多信息,请参阅UITableView 类参考

您的结构可以像这样简单:

 //This will represent two sections with two cells each
`NSArray *contentArray = @[@[@"Cell A",@"Cell B"],@[@"Cell C",@"Cell D"]];` 

这是一个包含将表示部分的元素的数组,每个元素/部分也是一个包含所有单元格值的数组。

在您的 TableView 的 Delegate 和 Datasource 方法上,您应该这样做

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (contentArray) {
        return contentArray.count;
    }
    return 0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (contentArray) {
        return [[contentArray objectAtIndex:section] count];
    }
    return 0;
}
于 2013-08-21T20:56:56.603 回答