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 type NSArray”。有任何想法吗?

4

2 回答 2

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

于 2013-09-08T10:57:47.957 回答
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 的东西上

于 2013-09-08T10:59:06.960 回答