重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在点击push下一个页面时,因为各种原因,点一下cell或按钮没有响应,用户可能就多点几下,这时候会打开好几个一样的页面。
创新互联主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务苏仙,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
这是因为push后的页面有耗时操作或者刚好push到另一个页面时,另一个页面正好在reloadData卡住主线程。造成点击cell时卡住了。
这时,我们可以通过重写导航控制器的方法来解决这个问题。
#import UIKit/UIKit.h
@interfaceNaviViewController : UINavigationController
@end
#import "NaviViewController.h"
@interfaceNaviViewController ()
// 记录push标志
@property(nonatomic,getter=isPushing)BOOLpushing;
@end
@implementationNaviViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.delegate=self;
}
- (void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated {
if(self.pushing==YES) {
NSLog(@"被拦截");
return;
}else{
NSLog(@"push");
self.pushing=YES;
}
[superpushViewController:viewControlleranimated:animated];
}
#pragma mark - UINavigationControllerDelegate
-(void)navigationController:(UINavigationController*)navigationControllerdidShowViewController:(UIViewController*)viewControlleranimated:(BOOL)animated {
self.pushing=NO;
}
@end
肯定不是的,你可以按自己的需求在指定的视图添加导航控制器。这就好比你在需要存储多个对象的时候建立数组来存储一样,导航控制器只是用来管理它存储的各个页面
//首先取出设置主题的对象
UINavigationBar *navBar = [UINavigationBar appearance];
//注意这是设置导航栏背景的颜色,即导航栏所覆盖的底层的颜色。而不是导航栏本身的颜色。
[navBar setBackgroundColor:[UIColor greenColor]];
//这才是设置导航栏本身的颜色
[navBar setBarTintColor:[UIColor orangeColor]];
//如果要对导航栏设置背景图片
[navBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
方法一:根视图必须是 UITabBarController
方法二:发生过模态跳转
注:这个两个方法建议写成全局方法,方便使用
期待你的评论建议O(∩_∩)O~