在TableView中根据文本标签加载不同的图像

时间:2015-12-12 14:22:37

标签: ios swift uiimageview

我的Table View基本标签为Table View Cell。我将单元格标记为“1月”,“2月”,“3月”等。当用户点击“1月”时,将使用以下Swift代码显示文件名为“jan.jpeg”的图像:

override func viewDidLoad() {
        super.viewDidLoad()

        let image = UIImage(named: "jan.jpeg")!
        imageView = UIImageView(image: image)
        imageView.frame = CGRect(origin: CGPointMake(0.0, 0.0), size:image.size)
} 

我的问题是,当用户点击“二月”时,是否有可能显示“feb.jpeg”,而“如果用户点击”三月“将显示”mar.jpeg?如何实现?

1 个答案:

答案 0 :(得分:1)

选择单元格后,将调用tableView:didSelectRowAtIndexPath:委托方法。如果您有预定义的单元格列表,则可以测试正在点击的单元格并加载正确的图像。例如:

在viewcontroller中使用tableView的所有函数之外有一个变量var imgName: String

还将此函数放在带有tableView的视图控制器中:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if indexPath.row == 0 {
        imgName = "jan.jpeg"
    }
    else if indexPath.row == 1 {
        imgName = "feb.jpeg"
    }
    else if indexPath.row == 2 {
        imgName = "mar.jpeg"
    }
    else {
        // Handle else
    }
    self.performSegueWithIdentifier("showImageSegue", sender: self)
}

您需要转到界面构建器并将viewcontrollers之间的segue命名为“showImageSegue”。

此外,实施prepareForSegue:功能:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    let destinationVC = segue.destinationViewController as ImageViewController // Replace ImageViewController with whatever the name of your destination viewcontroller is.
    destinationVC.imageName = imgName
}

最后,在ImageViewController类中,添加:

var imageName: String
override func viewDidLoad() {
    let image = UIImage(named: imageName)
    imageView = UIImageView(image: image)
    imageView.frame = CGRect(origin: CGPointMake(0,0, 0,0), size: image.size)
}
相关问题