2016-10-22 8 views
0

私のアプリでは、異なる機能セットを扱う2つのタブがあります。iOS - [ObjC] NavigationBarButtonItemがナビゲーションバーのルートビューがモーダルで表示されているときに表示されない

タブが1つです。ユーザーがこのタブに切り替えると、タブコントローラーはユーザーがログインしているかどうかを確認します。そうでない場合は、ビューコントローラーのログインをトリガーするボタン(LoginBtn)タップ

私はナビゲーションバーを使ってコントローラをモーダルで表示するつもりです。

しかし、私はそれを開始しましたが、ナビゲーションバーには右ボタンの項目が表示されていません。

は、ここで問題になる可能性がどのようなコード

- (void)clickLoginBtn{ 
    LogginController* _cLogginController = [[LogginController alloc] init]; 

    UINavigationController *_cNavController = [[UINavigationController alloc] initWithRootViewController:_cLogginController]; 

    _cNavController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(dismissLoginView)]; 
    [_cNavController.navigationItem.rightBarButtonItem setTintColor:kColorWhite]; 
    _cNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentViewController:_cNavController animated:YES completion:nil]; 
} 

ですか?コントローラーにモーダルを提示しているので可能ですか?

+1

。 –

+0

@ New16実際に私はそれを試みましたが、うまくいきませんでした。コントローラを不適切に追加したためかもしれませんが、まだ回答が見つかりません。 –

+0

@ Jinglei.Y私の答えを試してください –

答えて

0

あなたはログインコントローラにあなたのボタンを入れているこの問題は、このコード

- (void)clickLoginBtn{ 
    LogginController* _cLogginController = [[LogginController alloc] init]; 
    _cLogginController .hidesBottomBarWhenPushed=No;//You need to add this line 

    UINavigationController *_cNavController = [[UINavigationController alloc] initWithRootViewController:_cLogginController]; 

    _cNavController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(dismissLoginView)]; 
    [_cNavController.navigationItem.rightBarButtonItem setTintColor:kColorWhite]; 
    _cNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentViewController:_cNavController animated:YES completion:nil]; 
    } 
+0

まだボタンがありません。とにかくあなたの答えをありがとう。 :) –

1

によって解決されると思います。このcode.Iを試してください:あなたがにナビゲーション項目を追加しないでください

_cLogginController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(dismissLoginView)]; 

ナビゲーションコントローラ。あなたが `` LogginController` viewDidLoad`にこのコードを入れていないのはなぜ

0
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    DemoViewController * _cLogginController = [[DemoViewController alloc]init]; 
    _cLogginController = [storyboard instantiateViewControllerWithIdentifier:@"DemoViewController"]; 
    _cLogginController .hidesBottomBarWhenPushed = NO; 
    UINavigationController *_cNavController = [[UINavigationController alloc]initWithRootViewController:_cLogginController]; 
    _cNavController.navigationItem.rightBarButtonItem.tintColor = [UIColor blueColor]; 
    _cNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    _cLogginController.navigationItem.title = @"取消"; 
    UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
             initWithTitle:@"Flip" 
             style:UIBarButtonItemStyleBordered 
             target:self 
             action:@selector(flipView:)]; 
    flipButton.tintColor = [UIColor grayColor]; 
    _cLogginController.navigationItem.rightBarButtonItem = flipButton; 
    [self presentViewController:_cNavController animated:YES completion:nil]; 

output

関連する問題