【问题标题】:How to store multiple UIImages within each index of an array of UIImages in Swift 2.0?如何在 Swift 2.0 中的 UIImages 数组的每个索引中存储多个 UIImages?
【发布时间】:2016-01-28 05:43:32
【问题描述】:

首先,如果标题不是描述性的,我深表歉意。请随意更改它更适合我的问题。

所以基本上,我有一个名为 eventImagesUIImages 数组。

在 obj-C 中,我这样声明并初始化它:

NSArray *eventImages;

eventImages = @[ [UIImage imageNamed:@"lion_dance.jpg"],
                         [UIImage imageNamed:@"ivan_cheong.jpg"],
                         [UIImage imageNamed:@"tien_nguyen.jpg"],
                         [UIImage imageNamed:@"step_up.jpg"],
                         @[ [UIImage imageNamed:@"dj_happee.jpg"], [UIImage imageNamed:@"adam_cease.jpg"], [UIImage imageNamed:@"ao_dai.jpg"] ],
                         [UIImage imageNamed:@"california_summer.jpg"],
                         [UIImage imageNamed:@"question_mark"] ];

如您所见,在第 4 个索引处,我可以存储一个内部数组 UIImages

我想在 Swift 2.0 中实现这一目标

这是我到目前为止所做的:

var eventImages: [UIImage]?

eventImages = [UIImage(named: "lion_dance.jpg")!, 
UIImage(named: "ivan_cheong.jpg")!, UIImage(named: "tien_nguyen.jpg")!,   
UIImage(named: "step_up.jpg")!, [UIImage(named: "dj_happee.jpg")!, 
UIImage(named: "adam_cease.jpg")!, UIImage(named: "ao_dai.jpg")!], 
UIImage(named: "california_summer.jpg")!, UIImage(named: "question_mark")!]

但是,编译器给了我错误:

上下文类型 'UIImage' 不能与数组字面量一起使用

如何在 Swift 中实现我在 Obj-C 中实现的目标?

谢谢

【问题讨论】:

  • 你好@Pangu 跟随我的代码。它工作正常。
  • 如果遇到任何问题,请告诉我。
  • 你有解决方案吗..?

标签: objective-c arrays swift uiimage


【解决方案1】:

你可以这样做:

var eventImages = [UIImage(named: "lion_dance.jpg")!, 
UIImage(named: "ivan_cheong.jpg")!, UIImage(named: "tien_nguyen.jpg")!,   
UIImage(named: "step_up.jpg")!, [UIImage(named: "dj_happee.jpg")!, 
UIImage(named: "adam_cease.jpg")!, UIImage(named: "ao_dai.jpg")!], 
UIImage(named: "california_summer.jpg")!, UIImage(named: "question_mark")!]

如果您通过UIImage 声明数组类型,则不能添加UIImage ([UIImage]) 的数组,因为类型不同。但是,如果你跳过类型声明,Swift 会弄清楚并允许这个数组存在。

我认为数组的类型应该是NSObject,然后你可以直接将它转换为访问图像:

class SomeClass {

    var eventImages = [[UIImage()], UIImage(), UIImage(), UIImage(), [UIImage(), UIImage(), UIImage()]]

    func doSomething() {
        if let singleImage = eventImages[1] as? UIImage {
            // Access single image
        }
        if let imageArray = eventImages[4] as? [UIImage] {
            // Access image array
        }
    }
}

【讨论】:

  • 但是我需要 eventImages 是全局的,这样我才能在其他函数中访问它?..这就是为什么我在类名下面声明它为 UIImage 类型
  • 我真的不明白为什么你不能在你的类范围内声明它,比如属性。
  • 我是新手,所以我很抱歉,但我不明白?
  • 有没有更简单的方法可以在不创建内部类的情况下实现这一点?
  • 不要创建内部类 :) 在你的类中使用它。
【解决方案2】:

您可以按照以下步骤将多个图像存储在数组 Swift 2.0 中,如下所示,

--->首先准备或声明数组对象,

var eventImages : NSArray = NSArray()

--->现在在你的数组对象中存储你想要的任何图像,

    eventImages = ["1.png","2.png","3.png", NSArray(objects: "4.png", "5.png")]

---> 现在检查它的数组还是数组中的字符串,并获取图像名称并将其分配给图像视图

    if let arr = eventImages.objectAtIndex(2) as? NSString   // means it check whether its string 
    {
         self.imgVIew.image = UIImage(named: arr as String)
    }
    else // if not string then take from array like this 
    {
        self.imgVIew.image = UIImage(named: eventImages.objectAtIndex(3).objectAtIndex(1) as! String)
    }

我希望你得到你的图像并将其分配给图像视图...享受..it

【讨论】:

  • 我不想将它分配给图像视图,我只想访问数组中的 UIImage,并且可以访问数组中“特定”索引中的多个 UIImage。跨度>
  • 我只是通过将 uiimage 分配给图像视图来显示它,但你可以做任何你想做的事情。
  • 在 if true 部分中,您将根据图像数组的特定索引获取图像,在 else 部分中,您可以获得数组,以便执行您想要的任何操作。它非常适合我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多