iOS中如何在导航栏右边添加按钮

时间:2023-01-11 19:32:02
UIButton *releaseButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [releaseButton setTitle:@"发布" forState:normal];
        [releaseButton addTarget:self action:@selector(releaseInfo:) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *releaseButtonItem = [[UIBarButtonItem alloc] initWithCustomView:releaseButton];
        self.navigationItem.rightBarButtonItem = releaseButtonItem;

17 个解决方案

#1


大侠们帮帮忙啊,在线急等!!!!!!!!

#2


代码看着没什么问题,你可以DEBUG一下在添加时self.navigationController是不是nil

#3


确保你当前的控制器在导航控制器栈中(UINavigationController),意思是当前的控制器或为uinavigationcontroller 的rootViewController或为uinavigationcontroller 的viewcontrollers 中的一员

#4


如果是这种情况你可以尝试用uinavigationcontroller 包装一下

UIViewController *yourcontroller =  .......
UINavigationController *navController =[[UINavigationController alloc] initWithRootViewController: yourcontroller ] 

#5


引用 2 楼 sinom 的回复:
代码看着没什么问题,你可以DEBUG一下在添加时self.navigationController是不是nil

self.navigationController吗? 试了一下,不是nil 可右边按钮为什么显示不出来呢?

#6


引用 3 楼 zhanglei5415 的回复:
确保你当前的控制器在导航控制器栈中(UINavigationController),意思是当前的控制器或为uinavigationcontroller 的rootViewController或为uinavigationcontroller 的viewcontrollers 中的一员

该控制器是在在故事板中做的(拖了一个UINavigationController),主控制器中用如下代码来加载故事版
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Help" bundle:nil];
    UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"help"];
    HelpViewController *help = (HelpViewController *)nav.topViewController;
    help.navTitle = @"帮办";
    [self presentViewController:nav animated:true completion:nil];

关键是该控制器添加的左边的返回按钮能显示出来,右边的按钮却没添加上

#7


有知道原因的吗,不要沉啊 iOS中如何在导航栏右边添加按钮

#8


初始化frame

releaseButton.frame = CGRectMake(0, 0, 80.0f, 30.0f);

#9


没初始化。。怎么加上啊、
你在逗我吗 iOS中如何在导航栏右边添加按钮

#10


[
UIBarButtonItem *releaseButon=[[UIBarButtonItem alloc] initWithTitle:@"发布" style:UIBarButtonItemStylePlain target:self action:@selector(releaseInfo:)];
    self.navigationItem.rightBarButtonItem=releaseButon;
]
这样就行了

#11


楼主,我试了下,你的问题加个背景色并且加个frame就能显示了

#12


加一句就OK了[releaseButton sizeToFit];

#13


settitlecolor。你没有设置这个

#14


self.navigationController.navigationBarHidden = NO;

#15


成功的将导航栏上的按钮添加背景图片 并显示自己要的title

1.Button的属性
@property (nonatomic, strong)UIButton *rightBtn;//右按钮
2.rightBtn的懒加载
- (UIButton *)rightBtn
{
    if (_rightBtn == nil) {
        _rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(180, 0, 60, 30)];
        [_rightBtn setBackgroundImage:[UIImage imageNamed:@"buttonbar_action@2x"] forState:UIControlStateNormal];
        [_rightBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [_rightBtn setTitle:@"设置" forState:UIControlStateNormal];
    }
    return _rightBtn;
}
3.在viewDidLoad中实现

//状态栏上的右按钮
    UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:self.rightBtn];

    [self.navigationItem setRightBarButtonItem:rightBarButton];



#16


一般都是写一个基础的控制器,把navgationbar隐藏,添加一个View大小和导航栏一样大,以后每个控制器都可以继承自该控制器,可以在上面添加自己想要的任何东西

#17


没有初始化frame

#1


大侠们帮帮忙啊,在线急等!!!!!!!!

#2


代码看着没什么问题,你可以DEBUG一下在添加时self.navigationController是不是nil

#3


确保你当前的控制器在导航控制器栈中(UINavigationController),意思是当前的控制器或为uinavigationcontroller 的rootViewController或为uinavigationcontroller 的viewcontrollers 中的一员

#4


如果是这种情况你可以尝试用uinavigationcontroller 包装一下

UIViewController *yourcontroller =  .......
UINavigationController *navController =[[UINavigationController alloc] initWithRootViewController: yourcontroller ] 

#5


引用 2 楼 sinom 的回复:
代码看着没什么问题,你可以DEBUG一下在添加时self.navigationController是不是nil

self.navigationController吗? 试了一下,不是nil 可右边按钮为什么显示不出来呢?

#6


引用 3 楼 zhanglei5415 的回复:
确保你当前的控制器在导航控制器栈中(UINavigationController),意思是当前的控制器或为uinavigationcontroller 的rootViewController或为uinavigationcontroller 的viewcontrollers 中的一员

该控制器是在在故事板中做的(拖了一个UINavigationController),主控制器中用如下代码来加载故事版
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Help" bundle:nil];
    UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"help"];
    HelpViewController *help = (HelpViewController *)nav.topViewController;
    help.navTitle = @"帮办";
    [self presentViewController:nav animated:true completion:nil];

关键是该控制器添加的左边的返回按钮能显示出来,右边的按钮却没添加上

#7


有知道原因的吗,不要沉啊 iOS中如何在导航栏右边添加按钮

#8


初始化frame

releaseButton.frame = CGRectMake(0, 0, 80.0f, 30.0f);

#9


没初始化。。怎么加上啊、
你在逗我吗 iOS中如何在导航栏右边添加按钮

#10


[
UIBarButtonItem *releaseButon=[[UIBarButtonItem alloc] initWithTitle:@"发布" style:UIBarButtonItemStylePlain target:self action:@selector(releaseInfo:)];
    self.navigationItem.rightBarButtonItem=releaseButon;
]
这样就行了

#11


楼主,我试了下,你的问题加个背景色并且加个frame就能显示了

#12


加一句就OK了[releaseButton sizeToFit];

#13


settitlecolor。你没有设置这个

#14


self.navigationController.navigationBarHidden = NO;

#15


成功的将导航栏上的按钮添加背景图片 并显示自己要的title

1.Button的属性
@property (nonatomic, strong)UIButton *rightBtn;//右按钮
2.rightBtn的懒加载
- (UIButton *)rightBtn
{
    if (_rightBtn == nil) {
        _rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(180, 0, 60, 30)];
        [_rightBtn setBackgroundImage:[UIImage imageNamed:@"buttonbar_action@2x"] forState:UIControlStateNormal];
        [_rightBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [_rightBtn setTitle:@"设置" forState:UIControlStateNormal];
    }
    return _rightBtn;
}
3.在viewDidLoad中实现

//状态栏上的右按钮
    UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:self.rightBtn];

    [self.navigationItem setRightBarButtonItem:rightBarButton];



#16


一般都是写一个基础的控制器,把navgationbar隐藏,添加一个View大小和导航栏一样大,以后每个控制器都可以继承自该控制器,可以在上面添加自己想要的任何东西

#17


没有初始化frame