IOS SWIFT-调用基于uibutton图片的代码块

标签 ios swift uibutton uiimage

这是我试图让它工作的代码。我的目标是根据按钮的图像调用一段代码。该按钮根据之前的图像更改图像。

@IBOutlet weak var startFuncAButton: UIButton!

let navBtn = UIImage (named: "ArrowStraight")
let greenTimer = UIImage (named: "Timer")
let redTimer = UIImage (named: "TimerStop")

    @IBAction func startFuncA(sender: UIButton) {
    if self.startFuncAButton.imageView == greenTimer {
        println("button's image is green timer")
    }
    else if self.startFuncAButton.imageView == redTimer {
        println("button's image is red timer")
    }
    else if self.startFuncAButton.imageView == navBtn {
        println("button's image is arrow")
        NSLog("Start Navigation Button Pressed")
        self.navBar.hidden = true
        self.navigator = Navigator(route: self.route!)
        self.navigator?.HUD_delegate = self.navigationHUDView
        self.navigator?.locationUpdateDelegate = self
        self.navigationHUDView.hidden = false
        self.navigationHUDView.directionImageView.image = UIImage(named: "ArrowStraight")
        self.navigationHUDView.navigator = self.navigator
        self.navigationHUDView.backgroundColor = UIColor(red: 0.12, green: 0.13, blue: 0.16, alpha: 1.0)
        self.startFuncAButton.setImage(UIImage(named: "Timer"), forState: .Normal)

但是当我在应用程序中按下这个按钮时,没有任何反应。没有打印行发送到控制台。显然,我没有正确地执行条件。如何让它在 IOS Swift 中根据图像执行代码?

为了回答第一条评论,我扩展了我的代码段。正如您在最后一行中看到的,图像在两行中设置为“Timer”和“ArrowStraight”(来自 let 语句)。

最佳答案

  1. UIButton 的“imageView”是一个 UIImageView。您试图将其等同于 UIImage。它们永远不会是同一个对象。

  2. 依靠按钮的图像来执行条件代码是一种非常糟糕的实现方式。 UI(在您的情况下是要设置的图像)应取决于代码/逻辑(MVC 基础知识)。如果您基于图像执行条件代码,则您的逻辑取决于 UI。

  3. 您应该有一个标志(一个枚举)来表示当前的执行状态。您应该设置按钮的图像并根据标志在点击按钮时执行代码。

    枚举 TimerStatus : String {

    case Green = "绿色"

    case Red = "红色"

    案例停止 = "停止"

您可以在声明枚举变量时设置默认状态:

var timerStatus : TimerStatus = .Green


switch timerStatus {
case .Green:
    // Green status code
case .Red:
    // Red status code
case .Stopped:
    // Stopped status code
}

关于IOS SWIFT-调用基于uibutton图片的代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846096/

相关文章:

arrays - 仅从字典中获取键包括 Swift 中的数组

ios - 在 Swift 中更改按钮的字体

ios - 如何增加 UIButton 的点击区域?

ios - 使用 Swift 发送电子邮件

android - 从 Rails 应用程序向 iOS、Android、BlackBerry 发送通知

ios - 未能找到或生成匹配的歌唱 Assets :When i'm triyng to generate ad hoc ipa

java - 将 Swift iOS 客户端连接到 Netty 服务器

ios - Swift - 向 touchesBegan 中的操作添加计时器

iphone - 将按钮动态添加到 uitableviewcell - iPhone 应用程序

ios - 如何在iPhone SDK中显示完整尺寸的标签栏图标?