2012-04-01 13 views
4

UINavigationControllerがなくても、単純なナビゲーションバーでテーブルビューを表示するUITableViewControllerクラスをプログラムで作成しています(テーブルビュー階層のレベルがないため)。UINavigationBar Abit UITableView

- (void)viewWillAppear:(BOOL)animated { 
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)]; 
    [self.tableView addSubview:navBar]; 
} 

しかし、ナビゲーションバーは、最初のテーブルビューセルのほとんどをカバーし、全体のビューをスクロール:

は、ここで関連するコードです。

ナビゲーションバーをテーブルビューの上に固定し、コードをスクロールしないようにするにはどうすればよいですか?

答えて

1

問題は、あなたがUITableViewControllerを使用していることです。標準のUIViewControllerに切り替え、テーブルビューのデリゲートとデータソースメソッドを追加し、それらのメソッドにtableviewをポイントしてから、やりたいことをします。また、XIBにUIToolbarを追加して、それを作成することもできます。

ナビゲーションバーが本当に必要な場合は、NSNavigationViewコントローラを使用します。

+0

でもナビゲーションは不要ですか? – malhal

+0

これは 'UITableView'の静的セルでは機能しません。私は 'UITableViewController'のみを使用しなければなりません。私は' UIViewController'を試しましたが、運はありませんでした。それは必要です。 – haxpor

0

ナビゲーションコントローラを使用するときは、これが処理されますが、ナビゲーションバーは別のサブビューにすぎません。この対策は、ナビゲーションバーを基準にしてテーブルビューをフレーム化することです。

self.tableView.frame = CGRectMake(0,myNavBar.frame.size.height, 320, self.view.frame.size.height-myNavBar.frame.size.height); 
+0

おかげで再び。奇妙なことに、ナビゲーションバーは単にテーブルビューと共にプッシュダウンされていて、まだそれをカバーしています。 [super viewDidLoad]の前に、コードをviewDidLoadメソッド内に配置しました。 –

+3

今日は44pxの高さです。明日ではないかもしれない。 Appleは、自己の裁量により、高さを43pxまたは42pxまたは100pxに変更する権利を有します。さらに、Nav BarはLandscapeモードでは44pxの高さではありません。 – jmstone617

+0

iOS 7では64です。 –

-1

データの階層を持っていても、UINavigationControllerを使用する必要があるかどうかは関係ありません。先に進み、UINavigationControllerを使用するだけの3つの理由があります。あなたが自由のためのナビゲーションバー、およびナビゲーションコントローラを使う一日のウェイク場合は、あなたのビューコントローラ

  • にナビゲーションコントローラのルートビューコントローラのプロパティを設定すると、あなたのルートビューコントローラの適切なフレームを設定扱う取得

    1. 「ねえ、私の素晴らしいアプリにもう1つのレイヤーを追加したい!」と言っても、全体的なデザインを変更する必要はありません。
    2. @ danhの提案には、アップルがnav barの高さに関して何らかの変化を起こすことを免れています。
  • +0

    応答をありがとう。問題は、私はSNPopupViewにビューを取り込もうとしている。私はARCを使用していますが、これをすべてnibファイルで作成してみました。私はポップアップで動作するような方法でコードを介してナビゲーションコントローラを組み込むことができるかどうかはわかりませんが、もう一度試してみます。 –

    +0

    申し訳ありませんが、私はSNPopupViewに精通していません。エラーは何ですか? SNPopupViewはナビゲーションバーを持っていますか? – jmstone617

    +0

    すべてのモーダルビューコントローラを組み込む必要があるのは面倒なことですが、ナビゲーションコントローラ – malhal

    -1

    この動作を解決するには、親ビューコントローラのビューにUINavigationBarを追加することです:

    NOへのナビゲーションバーの半透明のプロパティを設定し
    [self.parentViewController.view addSubview:myNavBar]; 
    
    +0

    モーダルに表示されたUIViewControllerにはself.parentViewControllerがありません – malhal

    0

    self.navigationController.navigationBar.translucent = NO; 
    
    関連する問題