

stopButtonを押した時に、nextButtonとbackButtomを無効化したいのですが、どのようにすれば良いですか？

[code]

    IBAction func nextButton(_ sender: Any) {
        if imageIndex == 2 {
            imageIndex = 0
        }else {
            imageIndex = imageIndex + 1
        }
        imageView.image = images[imageIndex]
    }
    
    @IBAction func backButtom(_ sender: Any) {
        if self.imageIndex == 0 {
            imageIndex = 2
        }else {
            imageIndex = imageIndex - 1
        }
        imageView.image = images[imageIndex]
    }
    
    @IBAction func stopButton(_ sender: Any) {
        timer = Timer.scheduledTimer(timeInterval: 2, target: self,
                                     selector: #selector(self.movePhoto(_:)), userInfo: nil, repeats: true)
    }
    
    
[/code]


CC BY-SA 4.0
2019-03-28T05:14:36.900
53779
2019-03-29T01:59:33.487
2019-03-29T01:59:33.487
2238
32700
question
swift4
ボタン押下時に他のボタンを無効化したい


**_nextButtonとbackButtomを無効化したいのですが、どのようにすれば良いですか？_**

コードの一部しかご質問に掲載されていませんが、2つのボタンを表すoutlet変数は宣言して接続してあるでしょうか?
もしまだでしたら、次のような宣言を追加して、storyboardエディター上でoutletとして接続しておいてください。

[code]

    class ViewController: UIViewController {
    
        @IBOutlet weak var theNextButton: UIButton!
        @IBOutlet weak var theBackButton: UIButton!
    
        //...
    }
    
[/code]

※`ViewController`があなたの実際のクラス名と異なる場合には、適切に読み替えてください。

※`nextButton`や`backButton`という識別子がアクションメソッドの方に使われているので、かぶらないように`theNextButton`,
`theBackButton`なんてしてしまいました。本当はメソッド名の方を「アクションメソッドっぽい名前」に変えた方が良いと思うのですが、一度接続されたアクションメソッドのメソッド名を変更すると、Xcodeのバグを踏んでしまうことがあるので、outlet名の方をいじりました。

この準備をしておけば、普通の`UIControl`の無効化は`isEnabled`プロパティの値を`false`にしてやるだけです。

[code]

    @IBAction func stopButton(_ sender: Any) {
        timer = Timer.scheduledTimer(timeInterval: 2, target: self,
                                     selector: #selector(self.movePhoto(_:)), userInfo: nil, repeats: true)
        theNextButton.isEnabled = false
        theBackButton.isEnabled = false
    }
    
[/code]

お試しください。


CC BY-SA 4.0
2019-03-28T12:33:44.710
53787
2019-03-28T12:33:44.710
13972
53779
answer