цикл в uitableview - PullRequest
       1

цикл в uitableview

0 голосов
/ 16 августа 2011

Я разрабатываю приложение, в котором я отображаю данные из серверной части.

Теперь проблема в том, что я заполняю свою таблицу циклом for, а каждая ячейка цикла заполняет данные при каждом вызове. Предположим, что в базе данных есть 9 записей, я хочу, чтобы они отображались в каждой строке, но все 9 строк заполняются на 9 записей, перекрывая друг друга.

Поскольку я новичок в разработке для iPhone, пожалуйста, помогите мне.

это мой кусок кода, который я пытаюсь, но безуспешно.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.

    if(requestType == 2) 
    {       
        if (self.uniqueCityCount > 0) 
        {
            NSString *strCity = [self.arrayCityNames objectAtIndex:section];            //@"EventData" :@"EventCity"
            NSPredicate *predicateSettings =  [NSPredicate predicateWithFormat:@"(EventCity = %@ )",strCity]; 
            if ([self.arrayEventDescription count]>0)
            {
                [self.arrayEventDescription removeAllObjects];
            }
            self.arrayEventDescription = [CoreDataAPIMethods searchObjectsInContext:@"EventData" :predicateSettings :@"EventCity" :YES :self.managedObjectContext];
            return [self.arrayEventDescription count];  
        }
}       
    return 0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIImageView *imgEventLabel = [[UIImageView alloc]initWithFrame:CGRectMake(0, 5, 480, 22)];
imgEventLabel.image = [UIImage imageNamed:@"city_date_place.png"];


UILabel *lblCity = [[UILabel alloc]initWithFrame:CGRectMake(15, 00, 200, 22)];
lblCity.font = [UIFont systemFontOfSize:14];
lblCity.backgroundColor = [UIColor clearColor];
lblCity.tag = 301;
//lblCity.backgroundColor = [UIColor redColor];

UILabel *lblDate = [[UILabel alloc]initWithFrame:CGRectMake(200, 00, 200, 22)]; 
lblDate.font = [UIFont systemFontOfSize:14];
lblDate.backgroundColor = [UIColor clearColor];
lblDate.tag = 302;
//lblDate.backgroundColor = [UIColor redColor];

UILabel *lblSchool = [[UILabel alloc]initWithFrame:CGRectMake(350, 00, 400, 22)];
lblSchool.font = [UIFont systemFontOfSize:14];
lblSchool.backgroundColor = [UIColor clearColor];
lblSchool.tag = 303;

//lblSchool.backgroundColor = [UIColor redColor];
[imgEventLabel addSubview:lblCity];
[imgEventLabel addSubview:lblDate];
[imgEventLabel addSubview:lblSchool];

return imgEventLabel;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 22;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
NSString *CellIdentifier = [@"" stringByAppendingFormat:@"Cell%d",indexPath.row];      
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell.backgroundColor = [UIColor clearColor];

    if(requestType == 2)
    {   
        if (cell == nil)
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

            for (int j = 0 ; j < [self.arrayEventDescription count]; j++)
            {

                NSLog(@"%d",indexPath.row);
                //EventData *data = [self.arrayEventDescription objectAtIndex:indexPath.row];
                EventData *data = [self.arrayEventDescription objectAtIndex:j];

                cell.selectionStyle=UITableViewCellSelectionStyleNone;
                cell.backgroundColor=[UIColor clearColor];      


                //  UIView *viewDescription = [[UIView alloc]initWithFrame:CGRectMake(00, 00, 480, 35)];

                //////////////////////    Labels for description of city events from database  ////////////////////////////             

                UILabel *lblEvent = [[UILabel alloc]initWithFrame:CGRectMake(15, 00, 150, 30)];
                lblEvent.font = [UIFont systemFontOfSize:12];
                lblEvent.backgroundColor = [UIColor clearColor];

                UILabel *lblEventAtDate = [[UILabel alloc]initWithFrame:CGRectMake(200, 00, 150, 30)];
                lblEventAtDate.font = [UIFont systemFontOfSize:12];
                lblEventAtDate.backgroundColor = [UIColor clearColor];

                UILabel *lblEventAtSchool = [[UILabel alloc]initWithFrame:CGRectMake(350, 15, 150, 30)];
                lblEventAtSchool.font = [UIFont systemFontOfSize:12];
                lblEventAtSchool.backgroundColor = [UIColor clearColor];

                [cell.contentView addSubview:lblEvent];
                [cell.contentView addSubview:lblEventAtDate];
                [cell.contentView addSubview:lblEventAtSchool];


                lblEvent.text = data.EventName;
                //lblEventAtDate.text = data.EventDate;
                lblEventAtSchool.text = data.EventPlace;

            }   
        }
    }


// Configure the cell...

return cell;
}

1 Ответ

0 голосов
/ 16 августа 2011

Не перебирайте массив. Просто получите элемент для запрашиваемой строки (которая indexPath.row.)

cellForRowAtIndexPath: будет вызываться столько раз, сколько указано в numberOfRowsInSection:.

Просто сделайте по одной ячейке на звонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...