2

通常のテキスト フィールドを使用して、navigationBar の titleView を変更したいと考えています。次に、textField のサイズを設定して、古い「通常の」titleView を埋めたいと思います。

ストーリーボードでこれを行うことができないようです。ナビゲーション タイトル ビューがある場所にテキスト フィールドをドラッグしても機能しません。

だから私はでものを追加しました

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    PO(self.navigationItem.titleView);
    CGRect theFrame= self.navigationItem.titleView.frame;
    self.navigationItem.titleView=self.searchBar;
    //self.searchBar.frame = theFrame;
    while (false);
...

キャッシュされたもので動作しています。その PO は、オブジェクトのコンテンツを出力するマクロです。viewDidAppear で、self.navigationItem.titleView が null であることが判明しました。

そのため、searchBar を表示することはできますが、スペースがわからないため、searchBar をスペースに「埋める」ことはできません。

将来変更される可能性があるため、ハードコーディングは避けたいと思います。

それで、私は何をすべきですか?

self.navigationItem.titleView を設定するのではなく、単純にサブビューを追加するコードを見たことがあります。このアプローチの問題は、viewDidAppear、self.navigationItem.titleView でも 0 です。

これらのコードを追加しました:

CGRect theFrame= self.navigationItem.titleView.frame;
CGRect theFrame2 = self.searchBar.frame;
CGRect theFrame3 = self.navigationController.navigationItem.titleView.frame;

そして、構造体の値をnslogする方法がわかりませんが、theFrameとtheFrame3はすべて0です

4

1 に答える 1

2

これをviewWillAppear内で試すことができます:

UIView *customTitleView = [[UIView alloc]initWithFrame:CGRectMake((320-210)/2, 0, 210, 50)];
customTitleView.backgroundColor = [UIColor clearColor];

//create your UITextField or UILabel or other view and add as subview of customTitleView

self.navigationItem.titleView = customTitleView;
于 2012-10-09T05:06:25.923 に答える