Fah*_*kar 11 objective-c uitabbarcontroller uiviewcontroller uinavigationcontroller ios
我正在制作一个iOS应用程序,我有Tab栏+侧面菜单.
标签栏有5个项目,侧面菜单有大约12个菜单.
所有侧边菜单功能均来自标签1,侧边菜单可在标签栏中的所有视图中访问.
这意味着如果我在Tab 2上,即使我可以访问侧边菜单.当我单击选项卡1中的侧面菜单项时,我将转到选项卡1,然后将进行导航.
我想要做的是让我们说如果我从侧面菜单点击Complains菜单,我想去ComplainsViewController.
我使用的代码如下.
// go to first tab
self.tabBarController.selectedIndex = 0;
// now navigate
ComplainsViewController *sViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Complains"];
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:sViewCon animated:NO];
Run Code Online (Sandbox Code Playgroud)
我有两个场景.
场景1(正确)
我在标签1上,点击侧边菜单中的Complains.当我点击时,我使用上面的代码成功地去了ComplainsViewController.
场景2(正确)
我在Tab 2上,点击侧边菜单中的Complains.当我点击时,我成功转到选项卡1,但我没有导航到ComplainsViewController.当我单击返回选项卡2时,我看到在选项卡2中打开ComplainsViewController.
知道如何首先切换到Tab然后导航到另一个viewcontroller?
以下是我的基本结构.
最后我设法用另一种方式解决了这个问题 NSNotificationCenter
以下是我所做的。
第 1 步(在 SideMenuViewController 中)
// let first go to first index
self.tabBarController.selectedIndex = 0;
// now post notification and make transition
[[NSNotificationCenter defaultCenter] postNotificationName:@"TakeMeToComplains" object:nil];
Run Code Online (Sandbox Code Playgroud)
第 1 步,将更改 selectedIndex 并发布通知。
步骤 2(在所有其他视图控制器中)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(globalTakeMeToComplains) name:@"TakeMeToComplains" object:nil];
-(void)globalTakeMeToComplains {
// here I have code for Transition to go to ComplainsViewController
}
Run Code Online (Sandbox Code Playgroud)
在步骤 2 中,当我们切换到第一个选项卡栏时,viewWillAppear 在我正在收听通知的位置被调用。一旦听到通知,我将执行到另一个视图控制器的转换。
如果有人不清楚我在做什么,请告诉我。
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |