如何在推送前关闭模型视图控制器?
Posted
技术标签:
【中文标题】如何在推送前关闭模型视图控制器?【英文标题】:How to Dismiss Model View Controller before push? 【发布时间】:2015-12-10 08:58:20 【问题描述】:目前我的情况是这样的,
View Controller(VC1) --> Push Segue --> View Controller(VC2)
| ^
| Model Segue |
| | Push Segue
|-----> View Controller(VC3) ------|
现在在VC3
中,当我推入VC2
时,我想关闭VC3
视图控制器和
在VC2
后退按钮之后应该是VC1's
后视图控制器我想弹出VC3
我想要的是当我从 VC3 推 VC2 时我想删除 VC3,然后它应该出现 VC1
Check Example
我是这样做的,谁能帮帮我
视图控制器 (VC3):
- (void)callWebservice
[self dismissViewControllerAnimated:YES completion:^
[self performSegueWithIdentifier:@"showVC2" sender:self];
];
提前致谢
【问题讨论】:
我认为我们别无选择。 @CongTran 我想弹出 VC3,然后我想推送到 VC2 我不明白这个问题.. 上面的代码会做你想做的事.. 不明白 @Daij-Djan 我想要的是当我从 VC3 推送 VC2 时我想删除 VC3,然后它应该出现 VC1 【参考方案1】:我认为你可以这样实现:
当您在屏幕 3 时,您想要推送屏幕 2。您将关闭屏幕 3 并调用代理返回屏幕 1。 您将从 screen1 将视图推送到 screen2。您可以查看我的演示以了解我的想法:Demo Pushview Swift
DemoPushViewObj
【讨论】:
你可以在目标 C 中做吗? @BlackCop 没关系。等我,我会在 Objetive-c 中给你演示。 是的,我可以看到,但我的情况与您不同,请查看演示 s000.tinyupload.com/index.php?file_id=69811463087160928732 @BlackCop 啊,我明白了。你要推。在这种情况下,我已经修改了代码。检查一下。 它工作正常,但是当我们要从 VC3 推送到 vc2 时出现一个问题,然后一点点 VC1 正在显示如何隐藏该问题?【参考方案2】:如果您使用 segue,我认为您正在寻找 https://***.com/a/21415225/1320305,要手动执行此操作,请尝试以下操作:
你可以试试这个
// locally store the navigation controller since
// self.navigationController will be nil once we are popped
UINavigationController *navController = self.navigationController;
// retain ourselves so that the controller will still exist once it's popped off
[[self retain] autorelease];
// Pop this controller and replace with another
[navController popViewControllerAnimated:NO];//not to see pop
[navController pushViewController:aViewController animated:YES];
//to see push or u can change it to not to see.
或者试试这个
UIViewController *newVC = [[UIViewController alloc] init]; // Replace the current view controller
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[[self navigationController] viewControllers]];
[viewControllers removeLastObject];
[viewControllers addObject:newVC];
[[self navigationController] setViewControllers:viewControllers animated:YES];
【讨论】:
我认为这行不通,因为看到我做的这件事 我没找到你,我必须在哪里做这个? 我认为在您的 callWebservice 方法调用中。删除当前代码并放置任何一个选项。 您是否遇到任何错误或您可以分享更多代码摘录? 让我们continue this discussion in chat。以上是关于如何在推送前关闭模型视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章