2016-06-15 5 views
0

私のアプリの中で、私は次のエラーで問題を抱えている:は二度

Pushing the same view controller instance more than once is not supported 

それは少数のユーザーからのカムバックだバグレポートです。私たちはそれを複製しようとしましたが、(ボタンを二重にタップするなど)できません。これはビューコントローラを開くために使用する行です:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let editView = storyboard.instantiateViewControllerWithIdentifier("EditViewController") as! EditViewController 
editView.passedImage = image 
editView.navigationController?.setNavigationBarHidden(false, animated: false) 
if !(self.navigationController!.topViewController! is EditViewController) { 
    self.navigationController?.pushViewController(editView, animated: true) 
} 

誰もが考えていますか?私は少しの研究をしましたが、私たちがカバーしたStackについてのほとんどの答えは、調査方法について少し損失があります。

+0

どのようにDershowitz123をお勧めしますか? – Jahoe

+1

'if!(self.navigationController!.topViewController!はEditViewController.selfです)'を試してください。 – Dershowitz123

答えて

1

iOS7以降、pushViewControllerが非同期であるため、ビューコントローラをプッシュするボタンを押しすぎると、2回押しられます。 私はUINavigationControllerのデリゲートが- navigationController:didShowViewController:animated:

と呼ばれているフラグはそれは醜いですが、それは二回を避けることができる(すなわち- navigationController:willShowViewController:animated:)私が試した唯一の方法は、プッシュが呼び出されたときにフラグを設定することで、こうした問題に会い、設定を解除しています - プッシュの問題。

+0

リンゴはなぜそれを非同期にしましたか? – cuddlecheek

3

二度同じVCを押して避けるために、これを試してみてください:

if !(self.navigationController!.viewControllers.contains(editView)){ 
    self.navigationController?.pushViewController(editView, animated:true) 
} 
関連する問題