2

我正在开发我的第一个更复杂的应用程序,但找不到解决方案。我已经在我的应用程序中加载了大约 64 个图标。对于表格视图,用户可以为每个单元格分配这些图标之一。基本上,当他编辑单元格时,他会进入一个包含所有 64 个图标的新 UIView。当前选择的图标应该有一个边框,如果他点击另一个,边框应该移动,并且图标分配给 tableview 中的选定项目。

我现在的问题是:a) 如何将这 64 个图标加载到我的视图中?我已经使用所有 UIImageViews 创建了视图,但是如何将它们加载到这些 imageviews 中?如果我将它们复制到我的目录中,它们会保存在哪里?如何访问它们?b) 有没有比手动将 64 个不同的 UIViews 放入此视图并将它们与 IBOutles 链接起来更简单的方法?

4

4 回答 4

2

使用 UICollectionView 可以轻松解决您的问题。UICollectionView 就像 UITableView 一样。

浏览链接以了解有关 UICollection 的更多信息

http://skeuo.com/uicollectionview-custom-layout-tutorial

使用 UICollection 视图,您只需要传递保存在 Array 中的图像对象

于 2013-04-30T13:14:22.173 回答
0

这是关于各种主题的很多问题。

如何加载图标/图像?

UIImage *image = [UIImage imageNamed:@"fubar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

如果您只是在项目中复制图像,它们是主包的一部分,并且在大多数情况下,您几乎忽略了它们的保存位置。访问它们非常容易。(看上面)

有没有“更简单的方法”......好吧,如果你想知道是否有更简单的方法,你必须给我们一个方法。但是我认为一个简单的命名约定和一个循环是可行的。

NSMutableArray *icons = [NSMutableArray array];
NSString *iconName;
UIImage *image;
UIImageView *imageView; = [[UIImageView alloc] initWithImage:image];
for (int count=0 ; count < 65 ; count++) {
    iconName = [NSString stringWithFormat:@"icon%d.png", count];
    image = [UIImage imageNamed:iconName];
    [icons addObject:image];        
}

然后你会使用你的icons数组作为你的基础UITableView。不过关于那个。您可能想考虑使用 aUICollectionView代替。它就像一个表格,但它是一个项目网格,而不仅仅是行。它更适合大量图像。

至于如何将图像复制到视图中,您UITableView和您UICollectionView都有方法“询问”数据并为您提供位置。根据您刚刚设置的位置信息,它将处理其余部分。它可能看起来像

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    // ...
    // remembering 'icons' is our array of image data
    cell.imageView.image = icons[indexPath.row]; 
    // ...
}

从评论编辑如何判断应用程序包中是否存在文件?(我的回答只是剪切/粘贴)

[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
于 2013-04-30T13:21:43.763 回答
0

您必须在代码中执行此操作。我建议您将所有文件名放入 中NSArray,然后遍历它,并在每一步以编程方式UIImageView在您的文件上创建一个。ViewController我建议您进行子类化UIButton,以便在您点击它时将其“选中”,然后您可以将任何图像放入其中。

于 2013-04-30T13:11:04.033 回答
0

您可以使用 gridView 一个开源组件这里是链接

网格视图

还要检测到,您可以为每个 imageView 分配标签,例如从 0 到 63,然后当用户选择第 0 个图像时,您可以将该标签分配给本地变量,以便下次用户查看网格时,您可以识别该用户之前选择了第 0 个索引图像。我希望它对你有帮助。

于 2013-04-30T13:24:27.443 回答