2015-03-10 3 views
-1

Я новичок в разработке iOS. Я создаю демонстрационный проект, где у меня есть TableView и прототип ячейки. Я взял четыре изображения в этой ячейке. У меня есть группа, где у меня 30 изображений. Итак, в моем коде я взял массив для хранения изображений. Теперь я хочу заполнить таблицу таким образом, чтобы в моем TableView было 8 строк. Каждая строка будет состоять из 4 изображений, но последняя строка, которая является восьмой строкой, будет состоять из двух изображений.Наполнение таблицы согласно моему требованию

Но когда я запускаю свой код, в последней строке также отображаются 4 изображения вместо 2. Может ли кто-нибудь сказать мне, где я ошибаюсь? Заранее спасибо.

Это мой код ...

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

self.patternsArray = @[@"1.jpg",@"3.jpg",@"2.jpg",@"4.jpg",@"6.jpg",@"5.jpg",@"7.jpg",@"9.jpg",@"8.jpg",@"10.jpg",@"12.jpg",@"11.jpg",@"13.jpg",@"15.jpg",@"14.jpg",@"16.jpg", @"18.jpg",@"17.jpg",@"19.jpg",@"21.jpg",@"20.jpg",@"22.jpg",@"24.jpg",@"23.jpg", @"25.jpg",@"27.jpg",@"26.jpg",@"28.jpg",@"30.jpg",@"29.jpg"]; 
} 

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell"]; 

UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 

UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 

for (NSInteger i=0; i<=[self.patternsArray count]; i++) { 
    UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
    imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 

    UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
    imageView4.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+3]]; 
} 

return cell; 

} 

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



return [self.patternsArray count]/3.75; 

} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 

ответ

0

попробовать это один

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell" forIndexPath:indexPath]; 

UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 

UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
if(indexPath.row != 7){ 

    UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
    imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
    imageView3.hidden=NO; 

    UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
    imageView4.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+3]]; 
    imageView4.hidden=NO; 

} 
else 
{ 
    UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
    imageView3.hidden=YES; 

    UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
    imageView4.hidden=YES; 
} 
return cell; 
} 

для пользовательских изображений

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell" forIndexPath:indexPath]; 

    if(indexPath.row !=7){ 
     UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
     imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
     imageView1.hidden =NO; 

     UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
     imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
     imageView2.hidden =NO; 

     UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
     imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
     imageView3.hidden=NO; 

     UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
     imageView4.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+3]]; 
     imageView4.hidden=NO; 

    } 
    else{ 
     if(patternsArray%4 == 1){ 
      UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
      imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
      imageView1.hidden=NO; 

      UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
      imageView2.hidden=YES; 


      UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
      imageView3.hidden=YES; 

      UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
      imageView4.hidden=YES; 
     } 
     else if (patternsArray%4 == 2){ 
      UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
      imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
      imageView1.hidden=NO; 

      UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
      imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
      imageView1.hidden=NO; 

      UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
      imageView3.hidden=YES; 

      UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
      imageView4.hidden=YES; 
     } 
     else if (patternsArray%4 == 3){ 
      UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
      imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
      imageView1.hidden=NO; 

      UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
      imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
      imageView2.hidden=NO; 

      UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
      imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
      imageView3.hidden=YES; 

      UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
      imageView4.hidden=YES; 
     } 
     else{ 
      //you requirement 
     } 
    } 
} 
+0

Нет чувак! Приходят 32 изображения. Последняя строка содержит 4 изображения вместо 2. :(@Sumit – Tirthendu

+0

Я добавил эту строку 'if (indexPath.row! = 7) {}' это означает, что цикл не работает в то время, когда 8-я строка попала в cellForRowAtIndexPath. –

+0

I понял, что вы сделали! Но это не работает. :(@Sumit – Tirthendu

0

Попробуйте этот код, просто скрыть image3 & image4 взгляды в прошлом строка

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell"]; 

    UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
    imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:(indexPath.section * 4)+indexPath.row]]; 

    UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
    imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:(indexPath.section * 4)+indexPath.row]]; 

    if(indexPath.row != 7){ { 
     UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
     imageView3.image = [self.patternsArray objectAtIndex:(indexPath.section * 4)+indexPath.row]; 

     UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
     imageView4.image = [self.patternsArray objectAtIndex:(indexPath.section * 4)+indexPath.row]; 
     imageView3.hidden=NO; 
     imageView4.hidden=NO; 
    } 
     else { 
      UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
      UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 
      imageView3.hidden=YES; 
      imageView4.hidden=YES; 
     } 

    return cell; 
} 
+0

Сбой. :(@NANNAV – Tirthendu

+0

вы можете добавить свой журнал сбоев? – NANNAV

+0

Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [__ NSCFConstantString size]: нераспознанный селектор отправлен в экземпляр 0xd4048' – Tirthendu

0

Для тех, кто испытывает потребности, как у меня это решение ..

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

self.patternsArray = @[@"1.jpg",@"3.jpg",@"2.jpg",@"4.jpg",@"6.jpg",@"5.jpg",@"7.jpg",@"9.jpg",@"8.jpg",@"10.jpg",@"12.jpg",@"11.jpg",@"13.jpg",@"15.jpg",@"14.jpg",@"16.jpg", @"18.jpg",@"17.jpg",@"19.jpg",@"21.jpg",@"20.jpg",@"22.jpg",@"24.jpg",@"23.jpg", @"25.jpg",@"27.jpg",@"26.jpg",@"28.jpg",@"30.jpg",@"29.jpg", @"31.jpg",@"32.jpg"]; 
} 

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


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell" forIndexPath:indexPath]; 

UIImageView *imageView1 = (UIImageView*)[cell.contentView viewWithTag:1]; 
UIImageView *imageView2 = (UIImageView*)[cell.contentView viewWithTag:2]; 
UIImageView *imageView3 = (UIImageView*)[cell.contentView viewWithTag:3]; 
UIImageView *imageView4 = (UIImageView*)[cell.contentView viewWithTag:4]; 

if ([self.patternsArray count]%4 == 0) { 
    imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
    imageView1.hidden=NO; 

    imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
    imageView2.hidden=NO; 


    imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
    imageView3.hidden=NO; 

    imageView4.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+3]]; 
    imageView4.hidden=NO; 
} 

else if([self.patternsArray count]%4 != 0 && indexPath.row != [self.patternsArray count]/4){ 
    imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
    imageView1.hidden=NO; 

    imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
    imageView2.hidden=NO; 


    imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
    imageView3.hidden=NO; 

    imageView4.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+3]]; 
    imageView4.hidden=NO; 


} 
else 
{ 
    if ([self.patternsArray count]%4 == 1) { 
     imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
     imageView1.hidden=NO; 
     imageView2.hidden=YES; 
     imageView3.hidden=YES; 
     imageView4.hidden=YES; 
    } 
    if ([self.patternsArray count]%4 == 2) { 
     imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
     imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
     imageView1.hidden=NO; 
     imageView2.hidden=NO; 
     imageView3.hidden=YES; 
     imageView4.hidden=YES; 
    } 
    if ([self.patternsArray count]%4 == 3) { 
     imageView1.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row]]; 
     imageView2.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+1]]; 
     imageView3.image = [UIImage imageNamed:[self.patternsArray objectAtIndex:indexPath.row+2]]; 
     imageView1.hidden=NO; 
     imageView2.hidden=NO; 
     imageView3.hidden=NO; 
     imageView4.hidden=YES; 
    } 
} 

return cell; 

} 

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

if (_patternsArray.count % 4==0) { 
    return _patternsArray.count/4; 
} 
return [self.patternsArray count]/4 + 1 ; 

} 
- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 
Смежные вопросы