2016-04-24 20 views
0

ウェブページのwebViewを表示するアプリがあります。ウェブは多くのサブページを持つメインページで構成されています。私がメインページ上にいるとき、私はナビゲーションの戻るボタンを押して、前のビューコントローラに戻るというデフォルトの動作を維持します。しかし、Webがサブページ上にあるときは、ナビゲーションBackボタンを使ってWebをメインWebページに移動します。iOS戻るボタンを上書きする

ユーザが戻るボタンを押したときにキャッチする必要があります。ウェブサブページにいる場合は、ウェブのメインページに移動してwebViewが終了しないようにします。私はviewWillDisappear()を使用して戻るボタンをキャッチできると思っていましたが、ビューを閉じるのを防ぐにはどうすればいいですか?

+0

webviewコンポーネントのテスト方法を知っている必要がありますか、または戻るボタンで構造体を設定する方法を知る必要がありますか? –

答えて

0

チェックこれはアウトポスト:

Execute action when back bar button of UINavigationController is pressed

をこのような何かがあなたのビューコントローラのコードでは、やるべき:あなたはUIBarButtonItem(画像を使用する必要があり

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.hidesBackButton = true 
    let customBackButtonItem = UIBarButtonItem(title: "Back", style: .Bordered, target: self, action:#selector(customBackMethod(_:))) 
    self.navigationItem.leftBarButtonItem = customBackButtonItem 
} 

// @objc is so we can use #selector() up above 
@objc func customBackMethod(sender: UIBarButtonItem) { 
    if webView.canGoBack { 
     webView.goBack() 
    } 
} 

注:,スタイル:、ターゲット:、アクション:もしあなたが 'バック'イメージ、またはUIBarButtonItem(customView :)を望むなら。この質問を参照してください詳細については答える:https://stackoverflow.com/a/36180934/892990

0
KickimusButticus'と答えたと同様に

あなたがより簡単にストーリーボードなどを使用してそれを実行したい場合、あなたはそのようIBActionに背中のボタンをフックアップができ:

@IBAction func back() { 

} 

ユーザーがwebviewのサブページにあるかどうかを内部テストします。もしそうなら、あなたはwebviewを混乱させることができます。ホームページにある場合は、戻るボタンを使用してメインビューコントローラーにセグメンテーションするか、self.dismissViewControllerAnimated(true, completion: nil)を使用してそのビューコントローラーを閉じることができます。

+0

私はKickimusButticusの提案を実装しています。私はしかし、これはよりエレガントに見えるので、私はそれを試みたが、私の背中()関数が呼び出されることはありません。私はそれが正しいとそれを接続したと思います。私が間違っていることを示唆している? – Gongevangen

+0

@Gongevangen正しく接続した場合は、戻るボタンをクリックするたびに呼び出される必要があります。アトリビュートインスペクタで接続を調べることで、適切な接続があることを確認することをお勧めします。おそらくそれを再接続し、それが動作するかどうかを確認してください。 –

関連する問題