如何动态分组原型细胞目标 - c

时间:2013-08-21 07:56:00

标签: ios objective-c uitableview

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

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

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

假设在1/1/2001,我有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。第[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];

1 个答案:

答案 0 :(得分:2)

这样做的一种方法是使用一个结构来填充你的tableview,并且只要它被修改,只需重新加载你的所有tableview或只是重新加载它。

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

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

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

 //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;
}