Как скрыть/показать кнопку в быстрой - программирование

Как скрыть/показать кнопку в быстрой

Я пытаюсь иметь оператор 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
        }
    }
}
4b9b3361

Ответ 1

Как говорит @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 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 выполняет обработчики завершения в основном потоке, поэтому вам не нужно беспокоиться о вызовах пользовательского интерфейса от обработчиков завершения Parse.

Ответ 2

SHIWFT 3

Я создал IBOutlet: loadingBDLogo

Показать:

loadingBDLogo.isHidden = false

Скрыть:

self.loadingBDLogo.isHidden = true

Ответ 4

Пример кода для скрытия кнопки в 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.hidden = true
}



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

}

И

Вы должны сделать UIButton свойством класса, если хотите сохранить ссылку на него. Затем вы можете получить к нему доступ, используя self.takePhotoButton.