ループを停止する方法を理解する必要があります。私はいくつかの種類のループを試しましたが、最終結果は同じです - ループが進行中に停止ボタンを押すことはできません。ここで私はこれまで...ボタンを押してswiftでforループまたはrepeat-whileループを停止する
var stopButtonPressed = false
var numArray = [0,1,2,3,4,5,6,7,8,9]
for num in numArray{
print(num)
sleep(2)
if stopButtonPressed {
return
}
}
が明らかにボタンがtrueにstopButtonPressedセットを押されましたが、ループが反復されながら再び...ボタンを押すことができないものです。だからこれを行うにはより良い方法は何ですか?
EDIT [OK]を
@dasblinkinlight
ので、私はあなたが言っているのロジックに従うことができますが、実装はまだ混乱しています。あなたの例では、セレクタのために、 "MyClass.doOneStepOfLoop"を置くと完璧な意味があります。タイマーだけが、関数をパラメーターとして受け入れたくない。だから、それが機能を受け入れないなら、どうすればいいの?
問題を単純化するために、2秒おきに印刷(「1」)する方法はありますか?あなたの例オフに基づいて、私は...それは次のようになります
self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(print("1")), userInfo: nil, repeats: true)
を思うだろう。しかし、これは動作しませんし、私はあなたのように掲示Q & Aを通じて見
Argument of '#selector' does not refer to an initializer or method
エラーになりますまあ、残念ながら私はまだそれを取得しません。セレクタのために "YourClass.doAStep"や "Class.buttonPressed"や "Class.test"のような擬似コードがたくさんあります。
代わりに使用してください! – Smit
@Smitそれは助けにはならない - OPが解決している問題はループで対処できない。 – dasblinkenlight