web-dev-qa-db-ja.com

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
        }
    }
}
24
Tom F

@LAmasseが言うように、あなたは_button.hidden = true_を使いたいです。 _button.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
}
_

アウトレットがボタンに接続されている場合、コード行の左側に塗りつぶされた円があるはずです。次のようになります。

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」が==「Closed」である場合にボタンを表示する理由は明確ではありません。

最後に、私はパースにあまり詳しくありません。メインスレッドでfindObjectsInBackgroundWithBlockメソッドの完了ブロックが呼び出されない場合、そのコードを変更してメインスレッドでUIを更新する必要があります。

編集:

それ以来、Parseはメインスレッドで完了ハンドラーを実行することを学びました。そのため、Parse完了ハンドラーからのUI呼び出しについて心配する必要はありません。

30
Duncan C

Swift

IBOutletを作成しました:loadingBDLogo

表示するには:

loadingBDLogo.isHidden = false

非表示にするには:

self.loadingBDLogo.isHidden = true

19
BCHOKZ

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を使用してアクセスできます。

7
Vijay yadav
6
La masse