进行模态搜索时出现错误的 ViewController(使用 ECSlidingViewController)
Posted
技术标签:
【中文标题】进行模态搜索时出现错误的 ViewController(使用 ECSlidingViewController)【英文标题】:Wrong presentingViewController when doing modal segue (using ECSlidingViewController) 【发布时间】:2013-05-24 09:55:48 【问题描述】:我从登录视图控制器模态地呈现注册视图控制器。我的初始视图控制器是登录视图控制器,当我以模态方式呈现注册视图控制器时,没有任何问题,但是当我使用 ECSlidingViewController 在注销时重置顶视图时出现了问题。我使用以下代码在注销时将顶视图重置为登录视图控制器。
UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^
self.slidingViewController.topViewController = newTopViewController;
[self.slidingViewController resetTopView];
];
当我在使用 ECSlidingViewController 重置顶视图后模态显示注册视图时,注册视图控制器的 presentingViewController 属性设置为另一个视图控制器,而不是登录视图控制器。
我知道很难掌握问题的本质,但是如果有人需要更多细节以便他们可以回答这个问题,请随时:)
【问题讨论】:
你是如何展示注册 VC 的? 来自登录 vc 的模态 segue(带有情节提要)presentingViewController
报告了哪个视图控制器?这可能是ECSlidingViewController
的一个错误,因此演示该问题的示例项目(最好在 GitHub 上)会有很大帮助。
【参考方案1】:
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];
【讨论】:
以上是关于进行模态搜索时出现错误的 ViewController(使用 ECSlidingViewController)的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 if 语句中检查 json 响应时出现未捕获(承诺)错误
使用 axios.put [laravel + vuejs 3] 更新模式内的数据时出现错误 422
呈现模态 UIViewController 时出现奇怪的崩溃