在UITableView部分中显示核心数据

时间:2014-08-25 11:04:59

标签: ios uitableview sections

我有一个NSMutableArray联系人,我从CoreData获得,我想根据数据模型中的属性在带有Sections的UITableView中显示这些数据。

例如:

具有属性名称(String)的datamodel,section(Integer 16):

  1. testuser1,1
  2. testuser2,0
  3. testuser3,0
  4. testuser4,1
  5. 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;
            }
        }
    

2 个答案:

答案 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;
   }