使用prepareForSegue将图像文件名从一个ViewController发送到下一个

时间:2015-08-06 23:59:24

标签: ios swift segue viewcontroller

我正在尝试将图像数据从一个视图控制器发送到另一个视图控制器。数据在单独的swift文件中进行硬编码。我在xcode中有一个数据文件,其中包含以下内容:

class Data {

struct Entry {

    let filename: String
    let heading: String
    let headerSub: String

    init(profilePicture: String, profileTitle: String, profileSub: String) {
        self.heading = profileTitle
        self.filename = profilePicture
        self.headerSub = profileSub
    }

}

let headerData = [

    Entry(profilePicture: "image1.png", profileTitle: "person1", profileSub: ""),
    Entry(profilePicture: "image2.png", profileTitle: "person2", profileSub: ""),
]

}

而且,在我的ViewController中,我有以下内容:

let categorySegueIdentifier = "CategoryDetailSegue"

   override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == categorySegueIdentifier {
            if let destination = segue.destinationViewController as? RequestViewController {
                if let categoryIndex = tableView.indexPathForSelectedRow?.row {
                destination.categoryImage.image = data[0]

            }
        }
    }
}

在ViewController的开头,我添加了以下内容 -

let data = Data()

在我的目标视图控制器中,我有以下内容 -

var categoryImage = UIImage()

override func viewWillAppear(animated: Bool) {
    headerImage.image = categoryImage
}

为什么我收到以下错误: UIImage没有名为image的成员

知道问题是什么吗?

1 个答案:

答案 0 :(得分:0)

我想你想这样做:

destination.categoryImage = data[0]

不是这个:

destination.categoryImage.image = data[0]

假设data[0]UIImage。如果它是文件名,您当然希望这样做:

if let image = UIImage( named:data[0] ) {
    destination.categoryImage = image
}