我从登录视图控制器以模态形式呈现注册视图控制器。我的初始视图控制器是登录视图控制器,当我模态显示注册视图控制器时,没有任何问题,但是当我使用ECSlidingViewController在注销时重置顶视图时出现了问题。我使用以下代码在注销时将顶视图重置为登录视图控制器。
UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
self.slidingViewController.topViewController = newTopViewController;
[self.slidingViewController resetTopView];
}];
当我使用ECSlidingViewController重置顶视图后以模态方式显示注册视图时,注册视图控制器的presentingViewController属性设置为另一个视图控制器,而不是登录视图控制器。
我知道要把握问题的实质确实很困难,但是如果有人需要更多细节以便他们可以回答这个问题,请随时:)
最佳答案
ECSlidingViewController
似乎与presentingViewController
混为一谈。ECSlidingViewController
具有属性topViewController
,您应该可以从那里访问希望成为presentingViewController
的视图控制器。
我能够访问您希望成为presentingViewController
的视图控制器,如下所示:
ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController;
if(ec) {
UINavigationController *navController = (UINavigationController*)ec.topViewController;
if(navController && navController.viewControllers.count) {
UIViewController *top = navController.viewControllers[0];
// now you'll need to cast top to your presenting view controller's class, eg:
MyViewController *myVc = (MyViewController*)top;
[myVc doSomething];
}
}
您可能未在应用程序中使用导航控制器,在这种情况下,可能是这样的(未经测试):
ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController;
if(ec) {
UIViewController *top = (UIViewController*)ec.topViewController;
if(vc) {
// now you'll need to cast top to your presenting view controller's class, eg:
MyViewController *myVc = (MyViewController*)top;
[myVc doSomething];
}
}
关于ios - 执行模态搜索时出现错误的presentingViewController(使用ECSlidingViewController),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16732269/