как Скрыть / показать кнопку в 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
        }
    }
}

4 ответов


как говорит @LAmasse, вы хотите использовать button.hidden = true. button.hidden была переименована в button.isHidden в Swift 3

код, который вы выложили не имеет смысла.

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
}

если розетка подключена к вашей кнопке, слева от строки кода должен быть заполненный круг. Похоже это:

enter image description 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 "любого из результатов = = "закрыт".

наконец, я не очень хорошо знаком с разбором. Если блок завершения для метода findObjectsInBackgroundWithBlock не вызывается в основном потоке, вам придется измените этот код, чтобы обновить пользовательский интерфейс в главном потоке.

EDIT:

С тех пор я узнал, что Parse выполняет обработчики завершения в основном потоке, поэтому вам не нужно беспокоиться о вызовах UI из обработчиков завершения синтаксического анализа.


SWIFT 3

Я создал IBOutlet: loadingBDLogo

Показать:

loadingBDLogo.isHidden = false

Скрывать:

self.loadingBDLogo.isHidden = true


чтобы скрыть кнопку, Использовать.скрытые = истина https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/cl/UIView


пример кода для скрытия кнопки в 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.такефотобуттон.