【问题标题】: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

标签: ios objective-c model-view-controller


【解决方案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://stackoverflow.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 方法调用中。删除当前代码并放置任何一个选项。
  • 您是否遇到任何错误或您可以分享更多代码摘录?
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 2010-12-11
  • 2016-10-26
  • 2014-10-03
相关资源
最近更新 更多