如何将图像数组传递给detailView Swift?

时间:2015-07-07 01:26:02

标签: arrays image swift

好吧,我一直在制作测试应用程序以继续快速学习,今天我遇到了一个问题。 基本上我有一个tableview和一个detailview。对于我的tableview文件,我有一些数据,我正在传递给detailview,比如导航栏上的名称,一个图像和一些文本,这些数据存储在我的tableview文件的数组中,我使用" prepareforsegue"传递这个信息:

var names = ["name1","name2","name3"]
detailViewController.detailName = names[indexPath.row]

然后在我的detailViewController中,我为其设置了变量:

var detailName: String?

然后我用它作为东西,例如:命名我的导航栏或详细设置图像视图:

navigationItem.title = detailName!

现在,我不知道如何做的是将一整行信息传递给我的detailViewController中的变量。我想要做的是传递一个图像数组,以便在我的detailView上使用它。我希望能够通过按钮迭代图像数组,我知道如何设置它但我只需要知道如何传递数组,现在我只是传递其中一个值(一个名称,一个图像等...)

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

与你所做的事情没那么不同。

只需在detailViewController中为图像添加字段,然后使用它传递图像。图像可以用[UIImage]表示。但是,[String]也可用于本地文件名,[NSURL]可用于远程图像网址。

代码:

DetailViewController

var images: [UIImage]? // or var images: [UIImage] = []

prepareForSegue

detailViewController.images = YourImages

答案 1 :(得分:0)

你好像要求两件事之一:

  • 一个UIImage数组,您可以使用var imageArray : [UIImage] = []声明,然后附加您想要传递的任何图像。

或者,您可以传入[AnyObject]数组并通过执行

将其元素转换为UIImage或String
var objectArray : [AnyObject] = []
objectArray.append("test")
objectArray.append(UIImage(named: "test.png")!)

if let s = objectArray[0] as? String {
  // Do something with the string
}
if let i = objectArray[1] as? UIImage {
  // Do something with the image
}
if let s = objectArray[1] as? String {
  // The above cast fails, this code block won't be executed
} else {
  // ... but this one will
}

答案 2 :(得分:0)

在表视图控制器文件中:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get reference to the destination view controller
    var detailVC = segue.destinationViewController as! DetailViewController
    var detailImages: Array<UIImage> = []
    detailImages.append(UIImage(named: "pup.png")!)
    detailImages.append(UIImage(named: "cutepuppy.png")!)
    detailVC.detailImages = detailImages;
}

并在详细文件中:

    var detailImages: Array<UIImage>?