有人可以帮我提供一个示例代码来说明如何做到这一点:我有我的 UITableView 并且我已经设置了所有内容,我希望当你单击一个单元格时它会给你一个图像,我已经有了,有 8 个图像,因此 8 个单元格每个都有不同的名称,那么我该怎么办?例如我的单元格名称,“苹果”,“橙色”,“香蕉”等等,所以我需要为每个单元格提供一张图片,但当然在订单,我的意思是香蕉和香蕉等等。我知道这很简单,但是我还没有找到任何示例,而且我对这一切都很陌生,谢谢,XD ...
2 回答
你需要的是两个用文本描述和图像构建的 NSArray(这也可以用一个NSArray
和NSDictionary
两个键值对来完成)。在这种情况下,每个字典都有两个键值对(一个用于文本,一个用于图像)。
但为了简单起见,我们将使用两个 NSArray。
所以是这样的:在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
}
完整的项目可以在这里下载(我将在接下来的 24 小时内保留它)
当然有几种方法可以做到这一点。完全不涉及代码的最简单方法之一是使用 Xcode 中的场景构建器。
1 - 将 UITableViewController 添加到使用场景的应用程序 2 - 在此控制器和属性中选择表格视图,将其设置为“静态列表”(我不记得该属性的确切名称 - 我将编辑如果找不到,我的答案是添加它) 3 - 编辑列表中的项目数和每个单元格以具有您想要的标签 4 - 在场景中添加一些 UIController 并在其中添加图像 5 - 链接每个表使用 segue 将单元格移动到匹配的控制器(按住 ctrl 单击并拖动或单击选项) 6 - 单击构建和运行。
就是这样——不是一行代码!
Ps:我现在在我的 iPhone 上,但如果你需要,我可以发布一个完整的例子。对于快速原型来说,这实际上是一个非常酷的技巧。