UITableCell在一个部分中使用不同的数组

时间:2014-01-08 08:05:54

标签: ios uitableview

嗨,我有三个NSMutableArray。例如,数组 - a,b c。假设所有3个数组的大小都是3。

想问一下如何创建3节,每节包含3行(根据数组的数量)。在每个部分中,第一行来自a,第二行来自b,第三行来自c

1st Section:
[a objectAtIndex:1]
[b objectAtIndex:1]
[c objectAtIndex:1]

2nd Section:
[a objectAtIndex:2]
[b objectAtIndex:2]
[c objectAtIndex:2]

3rd Section:
[a objectAtIndex:3]
[b objectAtIndex:3]
[c objectAtIndex:3]

谢谢!

4 个答案:

答案 0 :(得分:2)

创建另一个数组并将a,b,c数组推入其中

NSArray container =@[a,b,c];

在你的tableview cellforRow
中 使用container[indexPath.row][indexPath.section]

答案 1 :(得分:0)

您可以将所有数组(a,b,c)放到另一个充当容器的数组中。从该容器中选择元素,如下所示:container[rowIndex][sectionIndex]。另请注意每个部分的设置编号:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    //should return number of arrays in container

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    //this should return number of elements corresponding to each section

Those methods是UITableViewDataSource Protocol

的一部分

答案 2 :(得分:0)

试试这段代码 在.h文件中

#import <UIKit/UIKit.h>


@interface ArrayViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
    NSMutableArray *ivContentsList;
}

// Properties
@property (nonatomic, retain) NSMutableArray *contentsList;

.m文件

- (void)viewDidLoad
{   
    [super viewDidLoad];

    NSArray *firstSection = [NSArray arrayWithObjects:@"one", @"two", nil];
    NSArray *secondSection = [NSArray arrayWithObjects:@"three", @"four", @"five", nil];
    NSArray *thirdSection = [NSArray arrayWithObject:@"six"];
    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:firstSection, secondSection, thirdSection, nil];
    [self setContentsList:array];

    [array release], array = nil;


}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    NSInteger sections = [[self contentsList] count];
    return sections;
}

- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{

    NSArray *sectionContents = [[self contentsList] objectAtIndex:section];
    NSInteger rows = [sectionContents count];
    return rows;
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSArray *sectionContents = [[self contentsList] objectAtIndex:[indexPath section]];
    NSString *contentForThisRow = [sectionContents objectAtIndex:[indexPath row]];

    static NSString *CellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    [[cell textLabel] setText:contentForThisRow];

    return cell;
}

答案 3 :(得分:0)

您可以尝试使用NSmutableDictionary:

 NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
    [myDict setObject:Array1 forKey:@"Section1"];
    [myDict setObject:Array2 forKey:@"Section2"];
    [myDict setObject:Array3 forKey:@"Section3"];
    NSLog(@"Result %@",myDict);

现在您可以使用此词典配置单元格。