ChavezChen / CWLateralSlide

One line of code to integrate 0 coupling side drawer!一行代码集成0耦合侧滑抽屉!
MIT License
1.28k stars 201 forks source link

侧滑Push问题 #41

Closed lyon888 closed 6 years ago

lyon888 commented 6 years ago

项目根控制器是一个导航栏,当点击侧滑菜单中的事件进行Push时,进而二级控制器,导航栏的标题,按钮会全部消失,楼主有这种问题出现过吗

ChavezChen commented 6 years ago

没有哦。你试试正常push 会不会也消失。。排除法查找一下试试。

lyon888 commented 6 years ago

试过了正常Push不会消失..奇怪的是在你cw_pushViewController:这个方法里面Push时animated设置为NO就会出现导航栏消失的问题。

ChavezChen commented 6 years ago

可能是因为我那个push是找到根控制器的导航栏进行push的,然后你自定义了根控制器push转场动画。。 自定义了push转场动画的话,在push的时候设置动画为NO则会导致你写自定义专场动画会不执行,于是就产生了异常。。。

lyon888 commented 6 years ago

查看了代码,发现你的框架里面当dismiss控制器时调用这个方法:- (void)animationViewHidden:(id )transitionContext;为什么会添加下列代码呢?

CWMaskView *maskView = [CWMaskView shareInstance];
for (UIView *view in toVC.view.subviews) {
    if (![maskView.toViewSubViews containsObject:view]) {
        [view removeFromSuperview];
    }
}

这代码当FromVc为无导航栏状态Push到ToVc时,maskView的toViewSubViews不包含NavigationBar,导致下次Push到下个页面时,导航栏被上述代码remove掉

ChavezChen commented 6 years ago

因为之前有同学使用用其他自定义转场动画第三方导致了冲突。他那边会在自定义转场之后在视图上添加一些额外的视图,然后当我Hidden的时候没有移除掉他所额外添加的视图就会导致隐藏抽屉后界面多了一些图层,于是我添加了这个,在我自己的显示动画执行完成时记录了当前所有的视图,在隐藏的时候将多添加的视图全部移除掉。。。。其实思想也是类似于 我显示动画时是一个什么状态,隐藏之后还原到之前状态。。 然后你所说的FromVC无导航栏Push 不是很理解。。没有导航栏怎么push呢。

lyon888 commented 6 years ago

无导航栏时指Hidden了

ChavezChen commented 6 years ago

这个问题,后来有人也出现了,已经做了调整了