首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用操作将UIBarButtonItem设置为backBarButtonItem不起作用

在iOS开发中,使用操作将UIBarButtonItem设置为backBarButtonItem时可能会出现不起作用的情况。这通常是因为backBarButtonItem只能通过导航控制器的根视图控制器来设置,而不能通过当前视图控制器来设置。

backBarButtonItem是用于自定义导航栏返回按钮的属性,它会替换默认的返回按钮,并显示指定的标题或图标。当用户点击该按钮时,导航控制器会自动执行返回操作。

要解决这个问题,可以尝试以下几种方法:

  1. 在当前视图控制器的前一个视图控制器中设置backBarButtonItem。在前一个视图控制器的viewDidLoad方法中,使用self.navigationItem.backBarButtonItem属性来设置返回按钮。例如:
代码语言:txt
复制
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];
  1. 在当前视图控制器的前一个视图控制器中设置leftBarButtonItem。在前一个视图控制器的viewDidLoad方法中,使用self.navigationItem.leftBarButtonItem属性来设置左侧按钮,并通过自定义按钮的方式实现返回功能。例如:
代码语言:txt
复制
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:[UIImage imageNamed:@"back_icon"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

- (void)backButtonClicked:(UIButton *)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
  1. 使用自定义的导航栏。可以通过隐藏系统导航栏,然后使用自定义的导航栏来实现返回按钮的设置。在自定义导航栏中,可以自由地设置返回按钮的样式和功能。

无论使用哪种方法,都需要注意以下几点:

  • backBarButtonItem只对下一个视图控制器的返回按钮起作用,而不是当前视图控制器的返回按钮。
  • 如果当前视图控制器是导航控制器的根视图控制器,backBarButtonItem将不起作用。
  • 如果同时设置了leftBarButtonItem和backBarButtonItem,leftBarButtonItem将覆盖backBarButtonItem。

腾讯云提供了丰富的云计算产品和服务,可以根据具体需求选择适合的产品。具体产品介绍和相关链接可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UI篇-UINavigationController之易忘补充

设置导航栏的背景图片 (多见于导航背景颜色是渐变颜色,使用一张图片)但是这张图片设置好以后,所有的控件的Y坐标都会下移64,也就是说,这张图片会占用屏幕的64pt 高度的屏幕,而且无法被普通试图覆盖使用...上面设置YES,下面的NO 关于导航返回:     首先ios7 之后只要使用系统自带的导航效果就有手动滑动返回的效果。但是当自定义返回按钮时,这种手动滑动返回的效果就没有了。...一个箭头后面带有文字的返回是使用的ios 自带的backBarButtonItem  ,显示的字体文字是push之前的山层页面的 title  ,如果希望文字是自定义的,需要在push 之前   self.navigationItem.backBarButtonItem...状态栏隐藏就可实现这样不错的页面效果 PS:  backBarButtonItem的自定义事件是不会被执行的 backItem = [[UIBarButtonItem alloc] initWithTitle...提供push和pop操作item.

2.1K20

iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

侧滑返回的操作效果与左上角的back按钮是一样的,所以一起放在这里进行探讨。...action:@selector(navBtnPress:)] ; createBtn.enabled = NO ; //刚开始设置不可选 createBtn.tag = 1001 ;...的一些特殊点,如果你上一级设置backBarButtonItem的标题过长(没有设置则默认是上一级标题),那么系统可能会自动用“Back/返回”来代替返回按钮中的标题。...,设置backBarButtonItem的title和image需要在AController内设置,在调用AController Push:B之前进行设置,   ,其他两兄弟则是在BController...self.navigationItem.backBarButtonItem,经过试验发现,这个backBarButtonItemBController的self.navigationController.navigationBar.backItem.backBarButtonItem

6.4K60

iOS开发UINavigation系列二——UINavigationItem

当然,我们也可以设置在push出来新的item的时候,隐藏前面的返回按钮,使用如下属性: @property(nonatomic,assign) BOOL hidesBackButton; - (void...)setHidesBackButton:(BOOL)hidesBackButton animated:(BOOL)animated; 默认为NO,设置YES将会隐藏返回按钮。...我们也可以通过下面的方法设置右边的按钮,或者直接设置一组按钮: @property(nullable, nonatomic,strong) UIBarButtonItem *leftBarButtonItem...,一个NavigationItem基本上是有三大部分组成的,当前显示的部分,返回按钮部分,和ButtonItem部分,同样对于创建和设置UIBarButoonItem,也有很多方法供我们使用。         ...,对于BarButtonItem这个对象,系统也封装好了许多原生的可以供我们使用,创建的时候使用如下方法: UIBarButtonItem * button = [[UIBarButtonItem alloc

61420

UINavigationController

使用步骤 初始化UINavigationController 设置UIWindow的rootViewControllerUINavigationController 根据具体情况,通过push方法添加对应个数的子控制器...*)viewController animated:(BOOL)animated; //使用pop方法可以移除控制器 //栈顶的控制器移除 - (UIViewController *)popViewControllerAnimated...; 清空导航条背景图片 // 清空导航条背景图片,系统判断当前是否Nil,如果nil,系统还是会自动生成一张背景图片 [self.navigationController.navigationBar...“自动型Segue” 手动型:需要通过写代码手动执行Segue,才能完成界面跳转 按住Control键,从来源控制器拖线到目标控制器 手动型的Segue需要设置一个标识 在恰当的时刻,使用perform...Segue对象的sourceViewController(来源控制器) 新建并且设置Segue对象的destinationViewController(目标控制器) 页面跳转前的操作 调用sourceViewController

1.4K60

# iOS导航栏控制Tips

许久不写UI,对UI的很多东西都生疏了,最近使用导航栏的各种场景做一些总结。 1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面。...self.navigationController setNavigationBarHidden:NO animated:YES]; } B页面: // 在页面将要出现时,记录原始侧滑手势代理对象,并将手势代理设置当前页面...方案有两种: 1.创建一个BaseViewController,然后统一设置navigationItem.leftBarButtonItem。...2.重写导航控制器的Push方法,在push之前,设置navigationItem.backBarButtonItem。...新的控制器数组设置导航控制器的栈数组,根据参数判断是否要显示动画。 我这边做了一些发散,因为一些类可能会有很多子类,那么想要保证父类以及子类的实例都只有一个,所以方法做了改进。

1.7K31

【IOS开发基础系列】Navigation页面导航专题

菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决 http://www.cnblogs.com/PleaseInputEnglish/p/3498032.html 2.5.2 导航条设置半透明...        NavigationBar设置透明(仅指定视图控制器进行透明处理),步骤如下:     1.在视图控制器的头文件中实现UINavigationControllerDelegate,...viewController animated: (BOOL)animated{     //如果进入的是当前视图控制器     if (viewController == self) {         //背景设置黑色...    } else {        //进入其他视图控制器        self.navigationController.navigationBar.alpha = 1;        //背景颜色设置系统默认颜色...一般人也会采用这样的方式)         就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了。

34420

【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

UIButton 就是这种控件; -- 静态控件 : 继承了 UIView 基类, 该类控件与用户之间不能交互, 之前使用的 UILabel 就是这种控件; -- 被动控件 : 该类控件可以接受用户操作...UIControl; -- 修改方法 : 使用 command + option + 3 打开身份检查器面板, Custom Class 设置 UIControl 类; -- 修改后 :  (...IBAction 设置 IBAction :  -- 设置过程 : 使用 control + 鼠标左键, 背景控件 UIControl 设置 IBAction 到 OCViewController.h...背景控件设置 UIControl : 之前的 UIView 不能响应点击事件, 在身份检查器 面板 Custom Class 由 UIView 修改为 UIControl; -- 2...., doneItem, nil]; //工具条设置按钮 [toolBar setItems:buttonArray]; //工具条关联到 UITextView, 作为虚拟键盘附件

6.5K20

iOS键盘、选取器上的工具栏

前言 我们在使用键盘的时候,在打字完毕后想要收起键盘继续操作,要么是习惯性点击界面空白处收起键盘,要么是在键盘上方点击一个“完成”之类的按钮来收起键盘。...我们用了一个UIBarButtonItem组成的数组,因为可以放多个按钮,只要在数组中继续添加就可以了,最后数组作为工具栏的Items添加进去就可以了。...不写的话不会在键盘上面显示工具条 [textField setInputAccessoryView:topView]; 这一行的意思是把工具栏作为输入框的InputAccessoryView,也就是附加视图,设置后会自动工具栏添加到适当的位置...上面我们是一个tooBar作为inputAccessoryView,这就是另一种实现方式,不使用delegate,单独创建一个UIToolBar,直接设置上去,这个toolbar的样式与功能和键盘的工具栏是不一样的...下面两个方法分别是取消和完成两个按钮的响应方法,一个是直接收起选取器,一个是收起选取器之外还要设置输入框的内容所选择的内容。 这样选取器的工具栏按钮就完成了。

1.4K10

iOS导航栏基础效果配置

UIStatusBarStyleLightContent; } - (BOOL)prefersStatusBarHidden { return YES; } 复制代码 若iOS7之后仍要使用第一种方法全局设置...,则需要在plist文件中添加View controller-based status bar appearance 字段,值NO ,意为不使用控制器管理状态栏。...设置返回按钮 //只设置颜色 self.navigationController.navigationBar.tintColor = [UIColor orangeColor]; 复制代码 //设置成图片...self.navigationController setNavigationBarHidden:NO animated:YES]; } 复制代码 注意:两种方法都是可以隐藏导航栏的,隐藏之后依然可以使用...但是如果用navigationBar.hidden隐藏导航栏,我们可以继续使用navigationBarHidden提供的滑动pop效果,如果用navigationBarHidden,这个操作无效;但前者

1.5K10

六天完成一个简单iOS App - 第一天

项目图片获取方式 图片的获取非常简单,我们只要将iTunes中的项目拖到桌面,然后改后缀名为zip,然后在解压就可以了,更简单暴力的可以使用iOS-Images-Extractor运行后直接项目拖进去...所以框架的搭建就使用代码了。 启动图片的设置在LaunchScreen.storyboard中,当然也可以在Assets.xcassets中直接拖入启动图片,但是需要在General中设置 ?...UI_APPEARANCE_SELECTOR才可以获得appearance属性进行统一设置,否则则不可以使用appearance属性。...UITabBar 中间添加按钮的实现 我们知道中间加号按钮是没有标题的,即使我们标题设置空,还有有标题的label站位,所以UITabBarItem是不能实现了,那么我们只能将一个button覆盖在中间这块区域上...平均分为5段,中间空出,其他四个TabBarItem设置完frame之后,懒加载button添加到中间位置。

1.1K50

iOS调整导航条BarButtonItem与titleView 的间距

,相当于btn向右移动width数值个像素,由于按钮本身和边界间距5pix,所以width设为-5时,间距正好调整 * 0;width正数时,正好相反,相当于往左移动width数值个像素...*/ negativeSpacer.width = 10; 1.1 调整右边按钮和titleView的间距 ---- //设置右边按钮 UIBarButtonItem...,相当于btn向右移动width数值个像素,由于按钮本身和边界间距5pix,所以width设为-5时,间距正好调整 * 0;width正数时,正好相反,相当于往左移动width数值个像素...:使用initWithCustomView 进行实例化 UIBarButtonItem *lefttItem = [[UIBarButtonItem alloc]initWithCustomView...]; self.navigationItem.rightBarButtonItem = item; } 2.3 使用 [UIBarButtonItem

2K20

iOS右滑返回的实现【修订】

引言 原理:利用系统的返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 在这里插入图片描述 I 、...给页面添加右滑返回手势 @implementation NavigationController - (void)viewDidLoad { [super viewDidLoad]; //设置右滑返回手势的代理自身...viewDidLoad设置右滑返回手势的代理自身 ExtendImplementationOfVoidMethodWithoutArguments([UINavigationController...使用class_getInstanceMethod()和method_getImplementation()获取相应SEL。...下方的IMP其实就是Implementation的方法缩写,获取到相应的方法实现后,然后再调用class_addMethod()方法IMP与SEL进行绑定即可。

1.6K20
领券