我试过搜索但到目前为止我似乎无法找到答案。
目前,我使用原型单元格动态填充数据。
我需要根据日期动态分组单元格。
假设在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];
答案 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;
}