使用iPhone中的数组动态创建tableView部分

时间:2014-04-22 04:34:53

标签: ios uitableview

我有应用程序,其中我想在表视图部分显示数据问题是我不知道总部分名称,因为它依赖于数组。那么如何在索引路径的行的单元格中显示每个部分的数据。

NSArray *test=[NSArray arrayWithObjects:@"June 20",@"July 20","May 1",@"May 10",nil];

所以我想在日期明智地显示tableView部分中的数据,就像6月20日6月20日的所有记录应该在一个部分中显示一样,并且在5月1日,所有5月的记录都是相同的。任何想法如何解决这个问题。感谢

3 个答案:

答案 0 :(得分:1)

最好创建一个标准结构,如(个人,我建议以下):

  1. 包含多个词典的数组
  2. 每个字典包含2个键
    • key,比方说, 6月20日,是value
    • 事件key,它的值是数组对象
      • 此数组是字符串的集合,基本上是这些天的内容
  3. 实施例

    可能的UITableViewController子类方法

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        arrTest = @[
                    @{@"Day":@"June 20",
                      @"Events":@[@"Repair window pane", @"Buy food for Elephant", @"Pay credit card dues"]},
                    @{@"Day":@"July 20",
                      @"Events":@[@"Repair window frame", @"Buy alot more food for Elephant", @"Pay credit card dues dues"]},
                    @{@"Day":@"May 1",
                      @"Events":@[@"Replace entire window", @"Sell Elephant, Get Cat", @"Return credit card"]},
                    @{@"Day":@"May 10",
                      @"Events":@[@"Take bath", @"Shave", @"Get new credit card"]}
                    ];
    }
    

    #pragma mark - Table view data source
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        //get count of main array (basically how many days)
        return arrTest.count;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        //get count of number of events in a particular day
    
        //old style
        //return [[[arrTest objectAtIndex:section] objectForKey:@"Events"] count];
    
        return [arrTest[section][@"Events"] count];
    }
    
    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
        //get value of the "Day" key (June 20 / July 20 ...)
    
        //old style
        //return [[arrTest objectAtIndex:section] objectForKey:@"Day"];
    
        return arrTest[section][@"Day"];
    }
    

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }
    
        //old style
        //NSString *strDayEvent = [[[arrTest objectAtIndex:indexPath.section] objectForKey:@"Events"] objectAtIndex:indexPath.row];
    
        NSString *strDayEvent = arrTest[indexPath.section][@"Events"][indexPath.row];
        [cell.textLabel setText:strDayEvent];
    
        return cell;
    }
    

答案 1 :(得分:0)

要确定特定部分的节和标题标题的数量,您需要实现UITableView委托方法。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [test count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

return [test objectAtIndex:section];
}

答案 2 :(得分:0)

部分名称和行内容有关系......因此最合适的方法是使用显示关系的对象来管理它

对于您的情况,对象/结构化数组将为您完成工作,对象具有用于存储日期文本的字符串内容和存储单元格内容数据的数组

或者使用带有键作为日期和值的NSDictionary作为数组内容数据作为数组