好吧,我一直在制作测试应用程序以继续快速学习,今天我遇到了一个问题。 基本上我有一个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上使用它。我希望能够通过按钮迭代图像数组,我知道如何设置它但我只需要知道如何传递数组,现在我只是传递其中一个值(一个名称,一个图像等...)
感谢您的帮助。
答案 0 :(得分:2)
与你所做的事情没那么不同。
只需在detailViewController
中为图像添加字段,然后使用它传递图像。图像可以用[UIImage]
表示。但是,[String]
也可用于本地文件名,[NSURL]
可用于远程图像网址。
代码:
在DetailViewController
:
var images: [UIImage]? // or var images: [UIImage] = []
在prepareForSegue
:
detailViewController.images = YourImages
答案 1 :(得分:0)
你好像要求两件事之一:
var imageArray : [UIImage] = []
声明,然后附加您想要传递的任何图像。或者,您可以传入[AnyObject]数组并通过执行
将其元素转换为UIImage或Stringvar 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>?