2010-12-11 7 views
2

UITabViewControllerのtableViewにUINabigationController内のUITabBarControllerから提示されたときのフレーム位置が変更される問題があります。通常のタブから表示すると、フレームは正常です。しかし、移動し、 'More'セクションからUITableViewControllerを表示すると、テーブルビューはナビゲーションバーと同じ高さに移動します(これは必要ありません)。ランタイムフレームの座標を正しい位置と不適切な位置の間でテストしたところ、同じ(0.0、0.0、320.0、411.​​0)と表示されます。 この問題は、1つのNav ControllerにtableViewを表示した後で、「More」VCや「More」VCなどの別のVCに移動して表示された後にのみ発生します。異なるUINavigationController( 'More')から表示されたときにUITableviewの高さが変化する

ここで私はこれをどのように修正できますか?

最後の画像は、アプリが起動したときのように、ナビゲーションバーのすぐ下のテーブルビューで表示されるようになっています。しかし、最初の2つでは、テーブルビューが下に移動したことがわかります。

ありがとうございます! alt text

alt text

alt text

+0

この問題は、ナビゲーションボタンをクリックしたとき以上に発生します。その他のタブです。そして、これらの画像は同じページのものです(2つは左のボタンを示しますが、もう1つはナビボタンです)。 – Ishu

+0

使用しているコードの一部を追加することがあります。新しいビューを表示するアクションから開始し、viewDidLoadビューまたはviewWill/DidAppearデリゲートがそのテーブルビューを表示します。 – WrightsCS

+0

それは問題ですが、私は手動で何かを手動で設定しているわけではありません。私はこれを通常のUITableViewControllerとUIViewControllerで試しました。彼らはどちらもこれを行います。すべてのViewControllerが行います。これはiOS 4.2.1のバグでしょうか? –

答えて

3

私はこの問題を解決できました。 UINavigationController内のUITableViewコントローラーをmoreNavigationControllerに移動すると、contentInsetおよびscrollIndicatorInsetsの 'top'変数に44ピクセルが追加されます。私はなぜこれが起こっているのか、tableViewが 'moreNavigationController'を離れるときにそれらの44ピクセルが削除されない理由はわかりませんが、ここに答えがあります。私はviewWillAppear内からこれらの2行を呼び出しています。

self.tableView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0); 
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0); 
0

リセットテーブルビューnibファイルのプロパティを自動サイズ調整。

あなたは内部のそれを見つけることができます。 ツール>インスペクタ

+0

どのようにそうですか?あなたはサイズのインスペクタを意味しますか? –

0

まずXIBを使用してビューでのUITableViewを取る属性。ナビゲーションバーを追加し、テーブルビューのサイズを変更します。あなたは実際に何が欲しいのかを知るでしょう。 alt text

まだ問題が見つかった場合は、教えてください。

0

コードを表示したり、設定のスクリーンショットを撮ることができれば、はるかに簡単です。私の経験から、UITableViewControllerインスタンスを作成し、Interface Builderでそれらをフックすると、画面がいっぱいになります。

どのように[その他]タブに接続していますか?それが2つのタブにあり、何か動的な操作を行っている場合は、UITableViewControllerクラスのviewDidLoadメソッドを確認してください。個別のインスタンスでない限り、テーブルを追加/削除/再追加する必要はありません。

チェックするためにいくつかの場所:

  1. のNSLogあなたtableHeaderViewの高さと位置
  2. のNSLogがあなたのtableFooterViewの高さと位置
  3. はbackgroundViewを作成し、それが本当の次元だものを見るためのtableViewのbackgroundViewプロパティに割り当て表示されている場所と表示されている場所
  4. UITableViewControllerのビューの開始位置を確認します。

ウィッシュもっと助けることができます。あなたのセットアップ/コードを見たいですか?

1

UITableViewControllerには、常に画面サイズに最も適合するような動作があります。 UITableViewControllerはフルスクリーンテーブルビューには適していますが、私はUITableViewControllerを使用せず、代わりにdatasourceとdelegateの両方を実装してtableViewControlerを実装することをお勧めします。いくつかはresizeSubViewsをNOに設定して問題を解決しましたが、実際にはコントローラ自体を再作成してもそれほど多くの作業はありません。

+0

これは問題を解決するかもしれないと思う、私はそれを試してみよう! –

関連する問題