IOS八门神器屏幕微信小程序左上角按钮的按钮怎么退?

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。统一设置push进来的控制器的左上角的返回按钮 - CSDN博客
统一设置push进来的控制器的左上角的返回按钮
(1)默认情况下,一般push进来的控制器的左上角显示的内容如下:
&1& “&“ + “该push进来的控制器的上一个控制器的navigationItem.title 属性“;例如,当 navigationItem.title = @"精华"
&2& 如果“该push进来的控制器的上一个控制器的navigationItem.title不存在“,那么可能显示的是“&“ + “该push进来的控制器的上一个控制器的tabBarItem.title属性“;
&3& 上面两条了解即可,重点在下面。
(2)push进来的控制器的左上角的返回按钮,可以通过“该push进来的控制器“的上一个控制器来修改,通过self.navigationItem.backBarButtonItem来设置。
(3)如果想统一设置所有push进来的控制器的左上角的返回按钮,那么一般要通过自定义一个导航控制器,如“XBNavigationController“,在该自定义的导航控制器内部通过重写 pushViewController: animated: 方法(即拦截push操作),在该方法内部来统一设置。
&1& 在重写 pushViewController: animated: 方法时,要调用 [super
pushViewController: animated:] 方法。
&2& 不能通过自定义控件的方式去设置navigationItem.backBarButtonItem,最终是无效的;
例如,通过自定义按钮的方式来设置backBarButtonItem:
vc.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithCustomView: button]
运行后,发现这种设置是无效的。
所以,应该通过“自定义控件“+“设置vc.navigationItem.leftBarButtonItem“来实现,但这种实现方式有一个缺陷,可能会篡改首次push进来的控制器的左上角内容(注意:首次push进来的控制器的左上角,我们并不希望显示为“返回按钮“)。
具体实现方式如下:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
if (self.childViewControllers.count & 0) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"返回" forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"en1"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"en2"] forState:UIControlStateHighlighted];
button.size = CGSizeMake(80, 30);
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentL
button.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
viewController.hidesBottomBarWhenPushed = YES;
[super pushViewController:viewController animated:animated];
(4)设置“按钮“内容的左对齐时,一般使用的是如下形式:
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentL
注意,不是使用如下形式:
button.contentMode = UIViewContentModeL
这种设置方法是无效的,contentMode 一般用的比较多的是 UIImageView,而对于UIButton,我们一般使用 contentHorizontalAlignment。
(5)补充:每执行一次 [self addChildViewController:nav]; 就会调用一次导航控制器内部的 pushViewController: animated: 方法;(可通过打印验证)
XBNavigationController *nav = [[XBNavigationController alloc] initWithRootViewController:vc];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"enen"] forBarMetrics:UIBarMetricsDefault];
[self addChildViewController:nav];
本文已收录于以下专栏:
相关文章推荐
快两年没有更新blog了,现在有点时间随便写点东西吧。
做iOS项目中,可能会经常遇到要定制后退按钮的情况,比如把后退按钮的title固定为“返回”(修改title对后面push的vc生效),比如用...
像左侧这样单单一个返回图标思路系统自带的返回是蓝色的图标+上一级的标题,我们可以将蓝色改成白色,再将文字隐藏或者移出屏幕步骤新建一个文件,继承于UINavigationController,重写 in...
iOS  上UINavigationController视图压栈形式,可以在当前视图无限制push许多视图,然而一些会觉得自带的push按钮不够美观,而且当上的上一个页面title很长的时候,那个返回...
这个功能很常用吧。为什么网上资料那么少呢~
最后我的解决方案:
实现UINavigationController的代理判断是否是栈底,如果不是就修改leftBarButtonItem的样式。
在要push的子界面中添加 :[self.navigationItem setHidesBackButton:YES];
最近要用到  用 系统自带的带箭头的返回按钮 返回到指定的ViewController 或者返回到RootViewController, 自定义NaviBarItem也可以 但是想用系统的箭头,就偶然...
我们可以通过基类设置BackButton的样式,也可以设置LeftButton然后隐藏BackButton,但是那样的话手势返回就没了。现在找到的方案是:设置返回按钮的背景图片为自定义的图片,为了解决...
修改navigationController返回按钮颜色和文字
问题描述1:
微信开发的时候,在公众号菜单中打开一个H5页面(如:个人中心),在这个页面上的一些操作,经过多次跳转后,点击左上角的返回按钮,发现会原封不动的返回至上一级页面。
即 公众号菜...
好久没有更新blog了,最近一直在忙着写代码结项,所以很多总结都攒到一块了。一块说一下吧
企业账号发布应用提示不信任
更新了iOS9之后,很多用户反映我们的应用***之后打不开,总是提示不受信任的开...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

参考资料

 

随机推荐