2016-06-13 6 views
0

これは取引です。UITabBarController内のUINavigationControllerのUINavigationBarのボタンが挿入されていません

私はUITabBarControllerを持っていますが、その子は4 UINavigationControllersです。

何が起こっていることである(バックボタンと私は可能な右側に置くことができるものは)の境界に比較的(オフセットなしで余裕が表示されないとき、私のセットアッププロジェクトでこのようにして、ボタンスクリーン)。

容易にを解決することができます。

しかしと、ここでこれは私がモーダルビューを提示したときのものが乱雑なる、興味深いを取得するために開始します。私が提示されたビューから戻ると、ボタンは予想される位置に移動します。

PS:私は UITabBarControllerの同じUINavigationbar外側を持っていたし、この問題は起こっていませんでした。モーダル

後モーダル

After Modal

Before Modal これが起こって、どのようにそれを避けるためです理由のように任意のアイデア?

+0

私はコントローラで 'viewWillApear'でsuperを呼び出さなかったので、同様の問題が発生しました。だから、あなたがスーパーメソッドを呼び出すことを確認してください.... – tbilopavlovic

+0

@ user1941284コードでは、viewDidAppearまたはviewWillAppearのスーパーへの呼び出しがありません。 –

答えて

0

それが変化しないように一定のスペースを追加します。

var negativeSpacer:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: self 
    , action: nil) 
    negativeSpacer.width = -5; // set the value you need 
    self.navigationItem.leftBarButtonItems = [...] //your left bar items 
+0

既にこれを試してみましたが、これは私が話していた解決策の1つです。モーダルから戻るときにボタンが動きます。 –

+0

それをナビゲーションバーの再レイアウトと考えて、欠けていたオフセットを適用します。それで、余分なボタン(ハッキング)が動かなくなってしまいます –

+0

'translatesAutoresizingMaskIntoConstraints'に何を設定しましたか?それは真実でなければならない。 – Dershowitz123

0

それとも、のようなタブバーで選択された最後のビューコントローラ保存することができます:

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 
    self.previousViewControllerIndex =  // get index of your tab here 

} 

モーダルを却下した後に表示、viewDidAppearがあなたのUITabBarControllerで呼び出され、以前に選択されたコントローラをプログラムで選択することができます

+0

これがうまくいく理由は何ですか?私がモーダルから帰ってきたとき、私はすでにタブバで選択したのと同じビューにいます。 –

+0

私はこれを試してみましたが、私は考えていたので、これも何の根拠もないようです。私が間違っていると思ったら、私を修正してください。しかし、私はすでにそれを試して、それはないです。 :( –

0

実際、ここには何か変わったことがあります。

UITabBarControllerの親としてUINavigationControllerを手動で追加する必要がありました。 また、hiddenプロパティをtrueに設定する必要がありました。

もっと良い解決策が見つかった場合や、なぜこれが起こっているのかについては、が正しくと答えています。

関連する問題