我还没有完全理解UITableView中的部分,但这是我到目前为止所得到的:
我的问题:How can i figure out how much Data to put in each section?
基本上,我有解析的JSON数据,然后将数据保存到NSMutableArray中。 这是我现在用来制作这两个部分的代码:
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0){
return @"Section 1";
}
else{
return @"Section 2";
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
这完美无缺。它为TableView添加了两个Sections。我的问题是将某些数据输入每个部分。
在JSON数据内部进行解析,每个对象都有一个Date,我将其与当前日期进行比较。如果Date在今天之后,我将它添加到Section 1.如果不是,那么我将它添加到Section 2。
以下是我处理的方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
... // Date Stuff
if (indexPath.section== 0 && isNewEvent) {
cell.textLabel.text = [[events objectAtIndex:indexPath.row] objectForKey:@"opponent"];
cell.detailTextLabel.text = [NSString stringWithFormat:@"Date: %@ | Time: %@", [[events objectAtIndex:indexPath.row] objectForKey:@"date"], [[events objectAtIndex:indexPath.row] objectForKey:@"time"]];
cell.detailTextLabel.textColor = [UIColor grayColor];
cell.imageView.image = [UIImage imageNamed:@"sports.png"];
return cell;
}
else
{
cell.textLabel.text = [[events objectAtIndex:indexPath.row] objectForKey:@"opponent"];
cell.detailTextLabel.text = [NSString stringWithFormat:@"Date: %@ | Time: %@", [[events objectAtIndex:indexPath.row] objectForKey:@"date"], [[events objectAtIndex:indexPath.row] objectForKey:@"time"]];
cell.detailTextLabel.textColor = [UIColor grayColor];
cell.imageView.image = [UIImage imageNamed:@"sports.png"];
return cell;
}
}
我认为这很有效,但我在两个部分都得到了重复数据。我相信这是因为这段代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(section == 0){
// return [events count];
}
else{
// return [events count];
}
}
在完成此CODE cellforrowatindexpath
之前,我不知道如何知道我将在每个部分放入多少数据。
如果您需要更多代码,我将非常乐意将其提供给您。谢谢你的帮助!
答案 0 :(得分:3)
应在应用调用cellForRowAtIndexPath
您应用的流程应为:
在viewDidLoad
方法中,您应该解析所有数据。此时,您应该知道哪些对象应该进入哪个部分。例如。可能有2个数组,第一个数组和第二个数组。获取所有数据,循环遍历,将对象添加到每个数组中。
然后在这一点上你可以说:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(section == 0){
return [arrayOne count];
}
else{
return [arrayTwo count];
}
}