iOS - [ObjC]导航栏的根视图以模态方式显示时未显示NavigationBarButtonItem

时间:2016-10-22 07:51:28

标签: ios objective-c uinavigationcontroller

在我的应用程序中,我有两个处理不同功能集的选项卡。

一个选项卡是用户选项卡,当用户切换到此选项卡时,选项卡控制器会检查用户是否已登录。如果没有,则显示一个触发登录视图控制器的按钮(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];
}

可能是什么问题?是否有可能是因为我以模态方式呈现给控制器?

3 个答案:

答案 0 :(得分:1)

您已将按钮添加到登录控制器:

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

您不应将导航项添加到导航控制器。

答案 1 :(得分: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];
    }

答案 2 :(得分: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