Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我想点击tabbar的某个按钮之后 想直接push到另一个页面,是要破坏代码的封装性么.... #286

Closed
beydeng opened this issue Jul 27, 2018 · 13 comments

Comments

@beydeng
Copy link

beydeng commented Jul 27, 2018

Base Info for this issue

  1. Version:v1.13.1
  2. Language:Objective-C
  3. iOS System Version:iOS10
  4. Prototype(是否是真机):YES
  5. Issue Type:Crash、Bug、Enhancement(希望能支持一个新需求)、Q-A

1. How to repeat the problem.

2. Please help me in this way.

3. Here is a Demo.

4. Here is my Debug log

谢谢

@ChenYilong
Copy link
Owner

不用破坏,在appdelegate里示例代码演示了,如何使用代理方法来拦截点击事件。

@ameue
Copy link

ameue commented Apr 18, 2019

@ChenYilong 你好,假设TabBarController有3TabBarItem,当前选中第一个TabBarItem,这个页面中有一个按钮,点击按钮push一个页面,当这个页面点击返回按钮或者用手势返回后,TabBarController已经选中的是第三个TabBarItem,这样可以吗

@ChenYilong
Copy link
Owner

现在的demo已经演示了,你进最新demo,点击鱼塘tab,进cell的二级,然后就有提示。会push到别的tab的二极页面。

@ChenYilong
Copy link
Owner

@ChenYilong 你好,假设TabBarController有3TabBarItem,当前选中第一个TabBarItem,这个页面中有一个按钮,点击按钮push一个页面,当这个页面点击返回按钮或者用手势返回后,TabBarController已经选中的是第三个TabBarItem,这样可以吗

不需要破坏封装性,我给了API可以实现这个功能。

@ameue
Copy link

ameue commented Apr 19, 2019

@ChenYilong 感谢回复
demo一种情况是(有plus button):在第二tab进入二级二级页面后,点击页面才做处理,这个时候手势返回的时候还是选中的第二个tab
第二种情况(没有plus button):在第二tab进入二级页面后,点击页面,pop-选中另外一个tab-再push一个页面,这种情况,原生的也可以处理。
我想咨询的是,在第二tab进入二级页面后,在这个二级页面点返回,或者是手势返回后,都已经选中另外一个tab。

@ChenYilong
Copy link
Owner

ChenYilong commented Apr 19, 2019

你看下demo实现,这个可以。有popSelect接口。index 传入对应的值:

效果:
TabA --(push)-->A2 --(popSelect)-> TabB --(在popSecect的 Callback 中执行push)--> B2

效果就是 B2 点击返回,回到TabB,点击TabA所在的TabBarItem,显示TabA,而非A2。

用法如下:

lottie005e

在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);
       }
   }];

@ameue
Copy link

ameue commented Apr 22, 2019

@ChenYilong 感谢你的回复
这样是能实现的,原生的tabbar也可以。
可能我的表述不清楚,我的想法是,在TabA --(push)-->A2(a2
是TabB的模块里面的页面)后,没有再次点击页面执行testPush,实际上tabbar已经选中了TabB,在页面上实际看到的效果是,如果在A2使用手势返回后,看到的效果是TabB已经选中

@ChenYilong ChenYilong pinned this issue Apr 22, 2019
@ChenYilong
Copy link
Owner

有没有对标的app效果,QQ或者微信?这样好理解。

@ameue
Copy link

ameue commented Apr 22, 2019

UU加速器,启动APP后,点击‘全部游戏’tab,然后点击页面右上角的‘搜索按钮’,然后点击页面上的‘王者荣耀’,进入下一个页面后,再用手势返回,看到的结果是‘加速’tab选中了。

@ChenYilong
Copy link
Owner

UU Game Booster by NetEase Games https://itunes.apple.com/nz/app/uu-game-booster/id1187805308?mt=8

@ChenYilong
Copy link
Owner

在点击王者荣耀按钮时,执行popSelect index的值1,然后再push新页面。这样是否可行。

@ameue
Copy link

ameue commented Apr 28, 2019

不行,点击返回和手势返回,tabbar消失了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants