2013-09-08 2 views
1

Так вот мой вопрос ...установка массива изображений в таблицу

У меня есть пользовательский tableViewController, что я пытаюсь установить изображения с массивом изображений. Я объявил свойство моего массива в моем файле заголовка:

NSArray *imageNames; 

} 
@property (nonatomic, strong) NSArray *imageNames; 

и мой массив в моем ViewDidLoad:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    self.imageNames = [NSArray arrayWithObjects:@"shop_deal.png", @"Tree.png", @"Water.png", @"Sky.png", @"Cat.png", nil]; 

и вот моя попытка положить каждый из этих образов в 4 моего разделы.

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
     SectionInfo *array = [self.sectionInfoArray objectAtIndex:section]; 
     if (!array.sectionView) 
     { 
      NSString *imageName = [[self imageNames] objectAtIndex:section]; 
      UIImage *imageIcon = [UIImage imageNamed:imageName]; 
      [[array sectionView] setImage: imageIcon]; 
**Error Message for line of code above:"`incompatible pointer types sending UIImage strong to parameter of type` `NSArray`".** 



     } 
     return array.sectionView; 
    } 

Теперь я не уверен, где я должен продолжить этот код, чтобы правильно поместить этот массив в таблицу. Я продолжаю получать предупреждение, в котором говорится: «incompatible pointer types sending UIImage strong to parameter of typeNSArray». Есть идеи?

+0

«Я все время предупреждаю, что говорит: ...», в какой строке кода стоит предупреждение? Я не вижу ничего в коде, который вы отправили, чтобы вызвать эту ошибку. –

+0

Я только что редактировал. Извиняюсь за это. – user2755126

ответ

0

Во-первых, вы должны удалить этот метод:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

То есть выборки в "заголовок" вид. Я не думаю, что вы хотите иметь заголовок.

Если вы прочитали документацию для UITableViewDataSource, существует два «необходимых метода». Внедрите оба из них, и вам должно быть хорошо идти.

Первый метод, tableView:numberOfRowsInSection: должен быть просто return self.imageNames.count;

Второй метод, tableView:cellForRowAtIndexPath: потребности создать UITableViewCell объект, придать ему имидж и имя и все остальное, а затем вернуться в клетку. Используйте indexPath.row, чтобы найти индекс массива элемента в self.imageNames.count, который должен отображаться в ячейке.

Более подробно и много примеров кода можно найти по адресу: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/AboutTableViewsiPhone/AboutTableViewsiPhone.html#//apple_ref/doc/uid/TP40007451

0

Вы должны использовать современный синтаксис Objective-C:

imageNames = @[@"shop_deal.png", @"Tree.png", @"Water.png", @"Sky.png", @"Cat.png"]; 


- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    NSString *imageName = [self imageNames][section]; // modern Obj.-C syntax 
    UIImage *imageIcon = [UIImage imageNamed:imageName]; // make sure this is NOT nil 
    UIImageView * imageView = [[UIImageView alloc] initWithImage: imageIcon]; 

    return imageView; 
} 

Убедитесь, что этот код работает, как вы хотите, а затем начать использовать материал раздела. Если мой выше код работает, проблема кроется в материале SectionInfo

+0

У Ahbi есть лучший ответ, я думаю, если вы не спрашиваете о headerViews, а о ячейках. – Joride

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