我有一个NSMutableArray联系人,我从CoreData获得,我想根据数据模型中的属性在带有Sections的UITableView中显示这些数据。
例如:
具有属性名称(String)的datamodel,section(Integer 16):
UITableView:(Image-Example)
第0节: 单元格0:testuser2 单元格1:testuser3
第1节: 单元格0:testuser1 单元格1:testuser4
我的问题是:
1.我如何计算每个部分的行数?
我知道我必须使用下面的方式,但我如何计算有多少联系人的部分为0或1?
2.如何在右侧显示它们?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (section == 0) {
return rowsSection0;
} else {
return rowsSection1;
}
}
答案 0 :(得分:0)
在UITableView中显示核心数据记录的最佳方法是使用NSFetchedResultsController。 您可以找到使用NSFetchedResultsController here的教程。
在NSFetchedResultsController init方法中,提供sectionNameKeyPath参数值,根据您要创建的部分的字段名称。在您的情况下"部分"。
也不要忘记相应地设置NSSortDescriptor。
在此之前我还建议你谷歌一点。此问题也在here之前提出过。
答案 1 :(得分:0)
NSMutableArray *contacts = []; //your Data array;
NSMutableArray *section0Contacts = [NSMutableArray alloc]init];
NSMutableArray *section1Contacts = [NSMutableArray alloc]init];
for(NSDictionary *dict in contacts)
{
if([[dict valueForKey:@"type"] isEqualToString:@"section1"])
[section0Contacts addObject:dict];
else if([[dict valueForKey:@"type"] isEqualToString:@"section2"])
[section1Contacts addObject:dict];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section ==0)
return [section0Contacts count];
else if(section ==0)
return [section1Contacts count];
else
return 0;
}
/**
* RETURNS TITLES OF SECTIONS IN UITableView
*/
-(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section==0) return NSLocalizedString("Section 1", nil);
else if (section==1) return NSLocalizedString("Section 2", nil);
else return @"";
}
/**
* RETURNS VIEW OF SECTIONS IN UITableView
*/
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel *sectionTitle = [[UILabel alloc] init];
sectionTitle.frame = CGRectMake(10, 10, 300, 10);
sectionTitle.text = [self tableView:tableView titleForHeaderInSection:section];
sectionTitle.font = [UIFont fontWithName:@"Your font name" size:12];
sectionTitle.textColor = [UIColor blackColor];
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 350.0f, 30.0f)];
[headerView setBackgroundColor:[constants filterSectionBgColor]];
[headerView addSubview:sectionTitle];
return headerView;
}
/**
* RETURNS HEIGHT OF SECTIONS IN UITableView
*/
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 30.0f;
}