【问题标题】:Changing UI Image to a specific image depending on variable in Swift Xcode根据 Swift xCode 中的变量将 UI 图像更改为特定图像
【发布时间】:2015-10-01 01:40:07
【问题描述】:

我想根据变量更改图像,我不知道该怎么做。

我认为我的代码是正确的,但是在 iOS 模拟器中,图像只是显示为空白。我想知道为什么?

下面是我的代码:

import UIKit

类 BuyTicketViewController: UIViewController {

@IBOutlet weak var stadiumImage: UIImageView!
@IBOutlet weak var logoImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    if (globalVenueSelected == "Gillingham Football Club"){
        let imageGillinghmaFootballClub : UIImage = UIImage(named: "gillinghamStadium.jpg")!
        let stadiumImage = (image: imageGillinghmaFootballClub)

    }
    if (globalVenueSelected == "Old Trafford"){
        let imageOldTraffordFootballClub : UIImage = UIImage(named: "oldTraffordStadium.jpg")!
        let stadiumImage = (image: imageOldTraffordFootballClub)

    }
    if (globalVenueSelected == "Emirates Stadium"){
        let imageEmiratesFootballClub : UIImage = UIImage(named: "emiratesStadium.jpg")!
        let stadiumImage = (image: imageEmiratesFootballClub)

    }
    if (globalVenueSelected == "Wembley"){
        let imageWembley : UIImage = UIImage(named: "wemblyStadium.jpg")!
        let stadiumImage = (image: imageWembley)

    }
    if (globalVenueSelected == "O2 Arena"){
        let imageO2Arena : UIImage = UIImage(named: "o2ArenaStadium.jpg")!
        let stadiumImage = (image: imageO2Arena)
    }



}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/


}

哦,顺便说一句,变量 globalVenueSelected 是一个全局变量,我不知道这是否会影响任何东西,但它可能会改变代码。

感谢您的帮助,谢谢。

【问题讨论】:

  • 这段代码甚至不应该编译。

标签: ios xcode swift uiimageview uiimage


【解决方案1】:

试试下面的代码。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    var imageName: String!

    switch globalVenueSelected {
    case "Gillingham Football Club":
        imageName = "gillinghamStadium.jpg"

    case "Old Trafford":
        imageName = "oldTraffordStadium.jpg"

    case "Emirates Stadium":
        imageName = "emiratesStadium.jpg"

    case "Wembley":
        imageName = "wemblyStadium.jpg"

    case "O2 Arena":
        imageName = "o2ArenaStadium.jpg"

    default: break
    }

    self.stadiumImage.image = UIImage(named: imageName)
}

您应该将 switch 语句放在 viewWillAppear(:) 中,因为您的 IBOutlets 可能未在 viewDidLoad 中设置。

此外,许多人认为使用反映该变量类型的变量名称是最佳实践。例如,

  • stadiumImage 应重命名为 stadiumImageView
  • 同样,logoImage 应重命名为 logoImageView

正确命名您的变量名称将使您和其他人更容易阅读、理解和维护您的代码。

此外,默认情况下,您项目的资产目录通常不接受 .jpg 文件。您可以将体育场图像转换为.png 格式,然后在设计时将它们添加到您的资产目录中,或者您可以参考this Stack Overflow answer,了解如何让您的资产目录接受非PNG 资产。

【讨论】:

  • 谢谢!那完成了工作。也非常感谢你的建议,我会在下一个学校项目中记住它。 :) @ndmeiri
  • @ArafatQureshi 不客气!我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多