iOS:如何处理用户可选择的图标? (保存/装载等)

时间:2013-04-30 13:05:07

标签: ios

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

我现在的问题是: a)如何将这64个图标加载到我的视图中?我用所有UIImageViews创建了视图,但是如何将它们加载到这些图像视图中?如果我将它们复制到我的目录中,它们将保存在哪里?如何访问它们? b)是否有比将64个不同的UIView手动放入此视图并将其与IBOutles链接更容易的方法?

4 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分: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的基础。尽管如此。您可能希望使用UICollectionView来代替。它就像一张桌子,但它是一个项目网格,而不仅仅是行。它可以更好地适应大量图像。

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

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

从评论中修改How to tell if a file exists in the app bundle?(我的答案只是剪切/粘贴)

[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];

答案 3 :(得分:0)

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

GridView

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