一、JSONModel-服务器返回的数据中有id,description等关键字
问题:description方法是NSObject自带的方法,包括类方法和对象方法,系统的id关键字,有时我们的参数会和这些参数混淆,导致使用参数出错。
解决:为了不和系统的关键字和方法混淆的问题,我们需要替换参数。在model中的.m文件中添加:
+ (JSONKeyMapper *)keyMapper{
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{@"classDesc":@"description"}];
}
二、页面无法左滑
问题:开发中发现push后的页面无法实现左滑返回上一页,WTF?这不是苹果自带的功能吗,而且我也没有禁止页面左滑,到底为什么?
解决:在自定义的导航栏中自定义backButton之后,左滑失效。自定义导航栏中我们使用下面几个方法解决。
self.navigationController.interactivePopGestureRecognizer.enabled = YES ;
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
我们只需要用到gestureRecognizerShouldBegin这个方法就能判断是否允许开始这个手势了。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES ;
}
设置完成后,运行代码,左滑正常。
三、自定义弹框
页面抖动:
CAKeyframeAnimation *animation = [[CAKeyframeAnimation alloc] init];
// [animation setDelegate:self];
animation.delegate = self;
animation.values = @[@(M_PI/64),@(-M_PI/64),@(M_PI/64),@(0)];
animation.duration = 0.25;
[animation setKeyPath:@"transform.rotation"];
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
[self.whiteView.layer addAnimation:animation forKey:@"shake"];
动画移除视图:
[UIView animateWithDuration:0.25 animations:^{
[self.whiteView setFrame:CGRectMake((Screen_Width-300)/2, Screen_Height, 300, 200)];
} completion:^(BOOL finished) {
[self.backView removeFromSuperview];
[self removeFromSuperview];
}];
知识点:
1、init时会触发- (void)layoutSubviews方法,那么在初始化的时候可以直接在此处设置UI。
四、tabbar跳转问题
方法一: 使用这种方法会导致返回原页面,页面会重新刷新。
CustomTabBarViewController *tabbarVC = [[CustomTabBarViewController alloc]init];
AppDelegate *appdelegateE = (AppDelegate*)[UIApplication sharedApplication].delegate;
//跳转到第二个tabbarItem
tabbarVC.selectedIndex = 1;
appdelegateE.window.rootViewController = tabbarVC;
方法二: 下面的方法就不会有这个问题咯,害的我想了各种方法避免上面的问题,还没有结果。
self.tabBarController.selectedIndex = 1;
网友评论