我正在使用ECSliding,我遇到了这个问题!
在我的项目中有以下文件:
InitViewController(ECSlidingController)
FirstViewController(UIViewController)
SecondViewController(UIViewController)
LeftMenuViewController(UIViewController)
ThirdViewController(UIViewController)
我使用InitView将我的FirstView设置为topview,向右滑动打开LeftMenu。 在LeftMenu中有2个按钮,一个按钮作为topview加载FirstView,第二个按钮加载SecondView。
在我的First和SecondView中有一个相同的按钮,可以将第三视图加载为顶视图控制器,但不是新视图:
ThirdViewController *third = [self.storyboard
instantiateViewControllerWithIdentifier:@"Third"];
[self presentViewController:third animated:YES completion:nil];
在我的ThirdView中有2个按钮,一个按钮加载FirstView,第二个按钮加载SecondView。 由于ThirdView不是topview而是另一个视图,我必须回想起ECSliding打开我的FirstView或SecondView。 我成功地使用我的InitView从我的ThirdView加载了FirstView
InitialSlidingViewController *home = [self.storyboard
instantiateViewControllerWithIdentifier:@"Init"];
[self presentViewController:home animated:YES completion:nil];
但是如何从ThirdView加载SecondView? 我的问题基本上是如何在普通视图之后加载使用ECSliding的东西。
答案 0 :(得分:1)
从Third
我们想要返回到滑动视图控制器并更改顶视图控制器。您目前正在使用此代码执行的操作:
InitialSlidingViewController *home = [self.storyboard instantiateViewControllerWithIdentifier:@"Init"];
[self presentViewController:home animated:YES completion:nil];
创建一个全新的滑动视图控制器来显示。最终,通过这样做,您将耗尽内存,因为您将分配数百个呈现的视图并且永远不可见。
所以,我们想要做的是给Third
一个属性:
@property (weak, nonatomic) ECSlidingViewController *slideController;
我们想在展示Third
之前设置该属性:
ThirdViewController *third = [self.storyboard instantiateViewControllerWithIdentifier:@"Third"];
third.slideController = self.slidingViewController;
[self presentViewController:third animated:YES completion:nil];
现在,当按下其中一个按钮时,我们可以说:“显示什么?我们可以解雇或者我们需要改变和解雇吗?”:
- (void)oneButtonPressed {
if ([self.slideController.topViewController isKindOfClass:[SecondViewController class]]) {
FirstViewController *first = [self.storyboard instantiateViewControllerWithIdentifier:@"First"];
self.slideController.topViewController = first;
}
[self dismissViewControllerAnimated:YES];
}
您需要为twoButtonPressed
编写相应的方法,然后就完成了。
对于您的新评论,而不是展示third
,而不是将其放入导航控制器并显示。然后,当您需要提交fourth
和fifth
时,您只需将它们推入导航控制器并再次弹出即可。如果需要,您还可以向他们提供slideController
。
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController :third];
[self presentViewController:nav animated:YES completion:nil];