Closed beydeng closed 5 years ago
不用破坏,在appdelegate里示例代码演示了,如何使用代理方法来拦截点击事件。
@ChenYilong 你好,假设TabBarController有3TabBarItem,当前选中第一个TabBarItem,这个页面中有一个按钮,点击按钮push一个页面,当这个页面点击返回按钮或者用手势返回后,TabBarController已经选中的是第三个TabBarItem,这样可以吗
现在的demo已经演示了,你进最新demo,点击鱼塘tab,进cell的二级,然后就有提示。会push到别的tab的二极页面。
@ChenYilong 你好,假设TabBarController有3TabBarItem,当前选中第一个TabBarItem,这个页面中有一个按钮,点击按钮push一个页面,当这个页面点击返回按钮或者用手势返回后,TabBarController已经选中的是第三个TabBarItem,这样可以吗
不需要破坏封装性,我给了API可以实现这个功能。
@ChenYilong 感谢回复 demo一种情况是(有plus button):在第二tab进入二级二级页面后,点击页面才做处理,这个时候手势返回的时候还是选中的第二个tab 第二种情况(没有plus button):在第二tab进入二级页面后,点击页面,pop-选中另外一个tab-再push一个页面,这种情况,原生的也可以处理。 我想咨询的是,在第二tab进入二级页面后,在这个二级页面点返回,或者是手势返回后,都已经选中另外一个tab。
你看下demo实现,这个可以。有popSelect接口。index 传入对应的值:
效果: TabA --(push)-->A2 --(popSelect)-> TabB --(在popSecect的 Callback 中执行push)--> B2
效果就是 B2 点击返回,回到TabB,点击TabA所在的TabBarItem,显示TabA,而非A2。
用法如下:
在A的二级页面,Push到B的二级页面,在从B返回时回到的是B的根页面,再点击A页面,也是根页面。
[self cyl_popSelectTabBarChildViewControllerAtIndex:3 completion:^(__kindof UIViewController *selectedTabBarChildViewController) {
CYLMineViewController *mineViewController = selectedTabBarChildViewController;
@try {
[mineViewController testPush];
} @catch (NSException *exception) {
NSLog(@"🔴类名与方法名:%@(在第%@行),描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), exception.reason);
}
}];
@ChenYilong 感谢你的回复 这样是能实现的,原生的tabbar也可以。 可能我的表述不清楚,我的想法是,在TabA --(push)-->A2(a2 是TabB的模块里面的页面)后,没有再次点击页面执行testPush,实际上tabbar已经选中了TabB,在页面上实际看到的效果是,如果在A2使用手势返回后,看到的效果是TabB已经选中
有没有对标的app效果,QQ或者微信?这样好理解。
UU加速器,启动APP后,点击‘全部游戏’tab,然后点击页面右上角的‘搜索按钮’,然后点击页面上的‘王者荣耀’,进入下一个页面后,再用手势返回,看到的结果是‘加速’tab选中了。
UU Game Booster by NetEase Games https://itunes.apple.com/nz/app/uu-game-booster/id1187805308?mt=8 ?
在点击王者荣耀按钮时,执行popSelect index的值1,然后再push新页面。这样是否可行。
不行,点击返回和手势返回,tabbar消失了
Base Info for this issue
1. How to repeat the problem.
2. Please help me in this way.
3. Here is a Demo.
4. Here is my Debug log
谢谢