2016-04-18 6 views
1

私はビーコンを使って距離を更新するこのコードを持っています。一度実行したperformseguewithidentifierを停止

func updateDistance(distance: CLProximity) { 
    UIView.animateWithDuration(0.8) { 
     switch distance { 
     case .Unknown: 
      print("unknown") 
     case .Far: 
      print("far") 
     case .Near: 
      print("near") 
     case .Immediate: 
      print("Immediate") 
      self.performSegueWithIdentifier("beaconSegue", sender: self) 
     } 
    } 
} 

私はちょうどそのすでに実行後self.performSegueWithIdentifier機能を停止する方法あればお願いしたいです。

+0

self.performSegueWithIdentifierを停止しないでください。必要な場合にのみ電話してください。 –

+0

しかし、この例では、ビーコンが絶え間なく "即時"の位置を出すときに、それがセグを実行することを理解しています。これを除いてセグをする良い方法はありますか? – Dze

+0

あなたは何を意味するのか分かりません。 self.performSegueWithIdentifierを実行したくない場合は、単に呼び出さないでください。 –

答えて

0

。このように:

var seguePerformed = false 

func updateDistance(distance: CLProximity) { 
    UIView.animateWithDuration(0.8) { 
     switch distance { 
     case .Unknown: 
      print("unknown") 
     case .Far: 
      print("far") 
     case .Near: 
      print("near") 
     case .Immediate: 
      print("Immediate") 
      if !self.seguePerformed { 
       self.seguePerformed = true 
       self.performSegueWithIdentifier("beaconSegue", sender: self) 
      } 
     } 
    } 
} 
+0

これはちょうどうまくいった。しかし、バックがビューから押されて、アプリケーションの近くにビーコンを置こうとすると、すぐに印刷され、セグをもう開きません。 – Dze

+0

'func viewDidAppear(_ animated:Bool)'のメソッド定義を追加し、メソッド内に 'seguePerformed = false'をリセットしてください – davidgyoung

+0

ありがとうございました。どうもありがとう。とても良い一日を。今私はプロジェクトを進めることができます。 – Dze

1

あなたがperformSegueWithIdentifierを防ぎたい場合は、次のように行うことができます:あなたが最初のセグエを実行するときにだけフラグを設定

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool { 
    if ... { // Set the condition if you want it can be perform 
     return true 
    } else { 
     return false 
    } 
} 
関連する問題