2011-02-04 10 views
0

みなさん、こんにちは 私はのviewDidLoadで簡単なコードを書いていますし、クラスは以下のように、のUITableViewControllerの子ですが、タイトルが表示されている間、ボタンは、表示されていない、UINavigationBarでUIBarButtonItemが表示されない場合の対処方法

私はボタンをクリックしていますもう一つはそのviewDidLoadメソッドでViewController.m、メソッドを呼び出すメソッドのコードは以下の通りです

//Code of button target method 

-(void)statusMethod { 
    NSLog(@"statusMethod"); 
    Status *ob=[[Status alloc]init]; 
    [self presentModalViewController:ob animated:YES]; 

} 

//Code of ViewDidLoad of Status.m 
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, width, 43)]; 
    navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self.view addSubview:navBar]; 
    [navBar release]; 

UIBarButtonItem *home = [[UIBarButtonItem alloc] initWithTitle:@"HOME" style:UIBarButtonItemStylePlain target:self action:@selector(homeMethod)]; 
self.navigationItem.rightBarButtonItem = home; 

UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonSystemItemAdd target:self action:@selector(addMethod)]; 
self.navigationItem.leftBarButtonItem = add; 


UILabel *label = [[UILabel alloc] initWithFrame: 
        CGRectMake(10,10,width-20,25)]; 
label.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
label.text = @"Status"; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont systemFontOfSize:25]; 
label.textAlignment = UITextAlignmentCenter; 
[navBar addSubview:label]; 
[label release]; 

任意のアイデア、コードの問題は何ですか? あなたが理解していない私、私は私の問題

+0

ナビゲーションコントローラを使用してこのビューをプッシュしているか、モーダルビューとして表示していますか? – benwong

+0

@Benwong私は簡単なナビゲーションバーを作っていて、左右にボタンを追加するだけですが、効果はありませんが、ナビゲーションバーのラベルはOKです –

答えて

4

のソリューションを取得する場合、uは、私が賞賛し、再び を掲載することができますそれはself.navigationItemように思えるだけUINavigationController(コントローラではなく、バー)で見ています。バー自体はそれをチェックするつもりはない。

は、だから、どちらか

1)は、独自のnavigationBarに付属している本当のUINavigationControllerを使用する必要がありますし、あなたのためnavigationItemsを処理します。その場合、上記のself.navigationItemコードが動作します。 (あなたはself.navigationItem.title = @"Status";を考慮する必要があります)

もしあなたのUITableViewControllerが物事をナビゲーションスタックに押し付けようとしているのであれば、これはどんな場合でも取るべき道です。

2)UINavigationBar独自のナビゲーション項目を使用します。

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Status"]; 

[navBar setItems:[NSArray arrayWithObject:navItem]]; 
[navItem release]; 

、その後UINavigationController/UINavigationBar /対処

[navBar topItem].leftBarButtonItem = add; 
[add release]; 

[navBar topItem].rightBarButtonItem = home; 
[home release]; 

として左右のボタンを設定します。あなたがあなた自身を追加する必要がありますので、ナビゲーションアイテムが付属していないようだ除きUINavigationItemは紛らわしいかもしれませんが、幸いにも、アップルはこれらのすべてが一緒に働いていることについて、ちょっとした説明をしています。UINavigationController documentation

関連する問題