UITableView设置不同的图像

时间:2012-05-19 22:12:39

标签: ios xcode uitableview

有人可以通过示例代码帮助我解决这个问题:我有我的UITableView,我已经设置了所有内容,我希望当你点击一个单元格时它会给你一个图像,我已经有了,有8个图像,因此每个都有8个不同名称的单元格,所以我能做什么呢?例如我的单元格名称,“苹果”,“橙色”,“香蕉”等,所以每个需要一张图片,但是当然,为了,我的意思是香蕉与香蕉等。我知道我很简单,但我没有找到任何这方面的例子,而且我对此非常新,谢谢,XD ......

2 个答案:

答案 0 :(得分:3)

您需要的是两个使用文本描述和图像构建的NSArray(这也可以使用一个NSArrayNSDictionary和两个键值对完成。在这种情况下,每个字典都有两个键值对(一个用于文本,一个用于图像)。

但为了简单起见,我们将使用两个NSArrays。

这样的事情: 在viewDidLoad

textArray = [[NSArray alloc] initWithObjects:@"Banana",
                          @"Orange",
                          @"Apple",
                          @"Grape",
                          @"Pineapple",
                          @"Apricot",
                          @"Pear",
                          @"Kiwi", nil];
imagesArray = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"Banana.png"],
                        [UIImage imageNamed:@"Orange.png"],
                        [UIImage imageNamed:@"Apple.png"],
                        [UIImage imageNamed:@"Grape.png"],
                        [UIImage imageNamed:@"Pineapple.png"],
                        [UIImage imageNamed:@"Apricot.png"],
                        [UIImage imageNamed:@"Pear.png"],
                        [UIImage imageNamed:@"Kiwi.png"],
                        nil];

* 这假设您的项目中有png图像,如上所述。

然后是UITableView数据源和委托方法:

#pragma mark - UITableView Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.   
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return count of our text array
    return [textArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tvCell"];


    cell.textLabel.text = [textArray objectAtIndex:indexPath.row];
    cell.imageView.image = [imagesArray objectAtIndex:indexPath.row];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Do whatever you need to here
}

可以下载完整的项目HERE(我将在接下来的24小时内将其保留)

答案 1 :(得分:0)

当然有几种方法可以做到这一点。完全不涉及代码的最简单方法之一是使用Xcode中的场景构建器。

1 - 将UITableViewController添加到正在使用场景的应用程序 2 - 选择此控制器中的表视图,并在属性中将其设置为“静态列表”(我不记得此属性的确切名称 - 如果找不到,我将编辑我的答案添加它) 3 - 编辑列表中的项目数,并为每个单元格创建所需的标签 4 - 在场景中添加一些UIController并在里面添加图像 5 - 使用segue将每个表格单元链接到匹配的控制器(按住Ctrl键单击并拖动或单击选项) 6 - 点击构建&跑。

就是这样 - 不是一行代码!

Ps:我现在正在iPhone上,但如果你需要,我可以发一个完整的例子。对于快速原型来说,它实际上是一个非常酷的技巧。