IOS中的多个可变阵列

时间:2016-02-23 07:20:04

标签: ios objective-c iphone nsmutablearray

我对ios更新鲜,任何人都可以告诉我,我如何管理多个可变阵列?例如:我有3个数组,一个数组用于图像,另外两个数组包含名称和描述,我想在UITableView单元格上显示

我试过这个但它崩溃了。

image = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"demo_business_image@.png"], [UIImage imageNamed:@"demo_business_image@.png"], nil];
name = [[NSMutableArray alloc] initWithObjects:@"Dinner Bell Annouse 50% Discount on Punjabi Food!", nil];
time = [[NSMutableArray alloc] initWithObjects:@"13M", nil];

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    return image.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UIImageView *img = (UIImageView *) [cell.contentView viewWithTag:720];
    UILabel *lbl1 = (UILabel *) [cell.contentView viewWithTag:721];
    UILabel *lbl2 = (UILabel *) [cell.contentView viewWithTag:722];
    img.image = [image objectAtIndex:indexPath.row];
//    lbl1.text=[name objectAtIndex:indexPath.row];
//    lbl2.text=[time objectAtIndex:indexPath.row];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    return cell;
}

4 个答案:

答案 0 :(得分:0)

有图像数组计数是2.But在名称和时间数组1对象只有那里。所以你必须给三个数组相同的大小。

答案 1 :(得分:0)

试试此代码

image=[[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"demo_business_image@.png"], nil];
name=[[NSMutableArray alloc]initWithObjects:@"Dinner Bell Annouse 50% Discount on Punjabi Food!", nil];
time=[[NSMutableArray alloc]initWithObjects:@"13M", nil];

- (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:    (NSInteger)section
 {
 return image.count;
 }


- (UITableViewCell *)tableView:(UITableView *)tableView   cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView  dequeueReusableCellWithIdentifier:CellIdentifier];
 cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 UIImageView *img=(UIImageView*)[cell.contentView viewWithTag:720];
 UILabel *lbl1=(UILabel *)[cell.contentView viewWithTag:721];
 UILabel *lbl2=(UILabel *)[cell.contentView viewWithTag:722];
 img.image=[image objectAtIndex:indexPath.row];
 //    lbl1.text=[name objectAtIndex:indexPath.row];
//    lbl2.text=[time objectAtIndex:indexPath.row];

if (cell == nil)
{
   cell = [[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleSubtitle   reuseIdentifier:CellIdentifier];
}
   return cell;
}

答案 2 :(得分:0)

- (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:    (NSInteger)section
{return image.count;}

image.count结果是来自编码的2值(来自图像数组的值), 当cellForRowAtIndexPath为每个数组调用2次时 但是在其他数组中只有1个值,它必须显示绑定数组的错误索引

答案 3 :(得分:0)

在您的代码中,图像计数为2因此更改,因为根据表格视图中的部分数量创建单元格2次,因为名称& time数组每个只包含1个对象,因此在NSMutableArray中添加相同数量的对象。

比你得到预期的输出。或者您可以尝试使用键值对的NSDictionary。