将图像数组设置到表中

时间:2013-09-08 10:46:41

标签: ios objective-c arrays

所以这是我的问题......

我有一个自定义的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 type NSArray”。有什么想法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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内容。如果上面的代码有效,问题在于SectionInfo的东西