如何在swift中隐藏/显示按钮

Tom*_*m F 25 hidden button ios swift

我正在尝试使用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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Dun*_*n C 32

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

你发布的代码没有意义.

if self.Status.text == "Closed" 
{
  Purchase().enable = false
}
Run Code Online (Sandbox Code Playgroud)

什么是购买?从大写的名字来看,它似乎是一个阶级.如果是这样,表达式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
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

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
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我不清楚为什么你会循环查询所有结果,如果任何结果的"StatusType"为=="已关闭",则显示按钮.

最后,我对解析不是很熟悉.如果未在主线程上调用findObjectsInBackgroundWithBlock方法的完成块,则必须更改该代码以在主线程上进行UI更新.

编辑:

我已经知道Parse在主线程上执行完成处理程序,所以你不必担心来自Parse完成处理程序的UI调用.


小智 19

SWIFT 3

我创建了一个IBOutlet:loadingBDLogo

显示:

loadingBDLogo.isHidden = false

隐藏:

self.loadingBDLogo.isHidden = true


Vij*_*dav 7

在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
    }

}
Run Code Online (Sandbox Code Playgroud)

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