所以这是我的问题......
我有一个自定义的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
”。有什么想法吗?
答案 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的东西