如何快速隐藏/显示按钮

Posted

技术标签:

【中文标题】如何快速隐藏/显示按钮【英文标题】:how to hide/show a button in swift 【发布时间】:2015-07-15 21:32:39 【问题描述】:

我正在尝试使用 if 语句,当标签显示特定状态时隐藏按钮,并在标签显示其他内容时显示。标签的名称是Status,当它显示"Closed"时,我想隐藏它,当它显示"Open"时,它就会出现。

var query3 = PFQuery(className:"Status_of_game")
query3.findObjectsInBackgroundWithBlock

    (namelist3: [AnyObject]!, error : NSError!) -> Void in

    for list3 in namelist3 

        var output = list3["StatusType"] as String

        self.Status.text = output

        println(output)

        if self.Status.text == "Closed" 
               
            Purchase().enable = false
        
    

【问题讨论】:

【参考方案1】:

正如@LAmasse 所说,您想使用button.hidden = truebutton.hidden 在 Swift 3 中重命名为 button.isHidden

您发布的代码没有意义。

if self.Status.text == "Closed" 

  Purchase().enable = false

什么是购买?从大写的名字看,它似乎是一个类。如果是这样,表达式Purchase() 可能会创建Purchase 类的新实例,这没有任何意义。你为什么要进行函数调用?如果那是创建一个新的Purchase 对象,那么该代码毫无意义。 (您将在 if 语句中创建一个新对象,该对象将在下一行被丢弃,因为您没有保持对它的强引用。)

您想为您的按钮设置一个 IBOutlet 并在 Interface Builder 中连接它。

声明可能如下所示:

Class MyViewController: UIViewController

  @IBOutlet weak var theButton: UIButton!
  //The rest of your view controller's code goes here

如果插座连接到您的按钮,则代码行左侧应该有一个实心圆圈。它看起来像这样:

然后您显示/隐藏按钮的代码可能如下所示:

func showQueryResults

  var query3 = PFQuery(className:"Status_of_game")
  query3.findObjectsInBackgroundWithBlock()
  
    (namelist3: [AnyObject]!, error : NSError!) -> Void in
    for list3 in namelist3 
    
      var output = list3["StatusType"] as String
      self.Status.text = output
      println(output)
      if output == "Closed" 
      
        theButton.isHidden = false //changed to isHidden for Swift 3
      
    
  

我不清楚为什么要循环查询查询的所有结果,并在任何结果的“StatusType”为 ==“Closed”时显示按钮。

最后,我对解析不是很熟悉。如果 findObjectsInBackgroundWithBlock 方法的完成块没有在主线程上被调用,您将不得不更改该代码以在主线程上进行 UI 更新。

编辑:

我已经了解到 Parse 在主线程上执行其完成处理程序,因此您无需担心来自 Parse 完成处理程序的 UI 调用。

【讨论】:

太棒了,它有效我很抱歉我把它放在错误的部分。谢谢你们俩。 请注意,上面的代码是用 Swift 2 编写的。我将正在讨论的一行更改为使用 Swift 3 语法theButton.isHidden,但没有将其余代码更新为 Swift 3。 【参考方案2】:

SWIFT 3

我创建了一个

IBOutlet: loadingBDLogo

展示:

loadingBDLogo.isHidden = false

隐藏:

self.loadingBDLogo.isHidden = true

【讨论】:

这正是我正在寻找的(Swift 3)【参考方案3】:

在 Swift 中隐藏按钮的示例代码:

import UIKit

class ViewController: UIViewController 

// Create outlet for both the button
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!

override func viewDidLoad() 
    super.viewDidLoad()
    //Set button2 hidden at start
    button2.isHidden = true




//Here is the action when you press button1 which is visible
@IBAction func button1(sender: AnyObject) 
    //Make button2 Visible
    button2.isHidden = false
    


如果要保留对 UIButton 的引用,则必须将其设为类的属性。然后您可以使用 self.takePhotoButton 访问它。

【讨论】:

【参考方案4】:

要隐藏按钮,请使用 button.hidden = true https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/cl/UIView

【讨论】:

我一开始就尝试过,因为我记得 obj-c 与此类似,但它仍然无法正常工作。 if self.Status.text == "Closed" Purchase().hidden = true 那么您介意显示更多代码吗?这样我就可以看到这个按钮隐藏了。 这就是除了按钮连接之外的所有代码。这个 if 语句的代码是否应该放在按钮的括号中? @IBAction func Purchase() if Status == "Closed" Purchase().hidden = true 用一个对象隐藏它:写“IBOutlet var button: UIButton!”将情节提要中的按钮连接到“按钮”,然后使用 button.hidden = true 我知道该怎么做,但我需要它与 if 语句一起使用,所以当我从服务器查询数据时,它会关闭游戏,以便知道更多人可以加入游戏。

以上是关于如何快速隐藏/显示按钮的主要内容,如果未能解决你的问题,请参考以下文章

为啥显示我的按钮,然后快速隐藏 onResume

MFC做了一个工具栏点击某个按钮有隐藏和显示功能

如何隐藏屏幕标题但显示后退按钮?

JavaFX 如何隐藏Pagination的按钮?

通过单击按钮显示消息,但我如何通过单击按钮隐藏此消息

Android 浮动按钮+上滑隐藏按钮+下滑显示按钮