読者です 読者をやめる 読者になる 読者になる

ボタンを押したら他のボタンが消えるようにする Swift

Swift

なにやら変なことになったのでメモ代わりに

まずやろうとしていること

ボタンを押したらもう一つのボタンが出たり消えたりする!!

import UIKit
class TestViewController: UIViewController {
    
    var hiddenbtn:UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        
        let mybtn = UIButton(frame: CGRectMake(100,100,100,100))
        mybtn.backgroundColor = UIColor.blueColor()
        mybtn.addTarget(self, action: "clickmy:", forControlEvents: .TouchUpInside)
        
        hiddenbtn = UIButton(frame: CGRectMake(100,300,100,100))
        hiddenbtn.backgroundColor = UIColor.brownColor()
        
        self.view.addSubview(mybtn)
        self.view.addSubview(hiddenbtn)
    }
    
    func clickmy(sender:UIButton){
        hiddenbtn.hidden = !(hiddenbtn.hidden)
    }

以上です.

これで十分ですが変なことになっていたので面白かったので書いておく.

下記は読みづらいと思うし自分用に書いているので読まなくても結構です.

しかしこの時に var hiddenbtn:UIButton!var hiddenbtn:UIButton? というふうにしてnilを許容する形にすると

func clickmyの中でhiddenbtn?.hidden = !(hiddenbtn?.hidden)こう書いてしまった日にはおしまいです.

Xcodeに怒られて修正しろ!と赤丸の白抜きエラーで != nilをどんどん付けられます.

なれの果て

((((hiddenbtn?.hidden = !(hiddenbtn?.hidden)) != nil) != nil) != nil)

プロパティを?にしたかったら

hiddenbtn!.hidden = !(hiddenbtn!.hidden)

で書きましょう.