【问题标题】:Closing a view displayed via a modal segue关闭通过模态 segue 显示的视图
【发布时间】:2012-01-20 17:58:55
【问题描述】:

我正在手动调用 segue(设置为模态),以便使用带有以下代码行的 Storyboard 在 Xcode 4.2 中显示登录表单:

[self performSegueWithIdentifier:@"LoginSegue" sender:nil];

我可能遗漏了一些非常简单的东西,但是我找不到以编程方式关闭登录视图并返回上一个视图的方法。

视图是导航视图控制器的一部分,因此将 segue 类型设置为“推送”允许我使用后退按钮将我送回上一个屏幕,但在“模态”模式下,我并不完全确定如何实现这一点(例如按下按钮后)

任何帮助将不胜感激。

【问题讨论】:

  • xcode 只是一个 IDE,请编辑这个

标签: objective-c ios cocoa-touch uistoryboard


【解决方案1】:

如果您的部署目标是 iOS 5.0 或更高版本,请使用以下消息:

[self dismissViewControllerAnimated:YES completion:nil];

或者在 Swift 中:

self.dismissViewControllerAnimated(true, completion: nil)

如果您的部署目标较旧,请使用此(已弃用)消息:

[self dismissModalViewControllerAnimated:YES];

【讨论】:

  • 谢谢 Rob,我已经试过了,但它似乎没有做任何事情。这有什么特殊条件吗?
  • 我用故事板中的两个 VC 做了一个简单的测试用例。最初的 VC 有一个“模态”按钮,模态连接到第二个 VC。第二个 VC 有一个“关闭”按钮,连接到执行 [self dismissModalViewControllerAnimated:YES] 的方法。它按预期工作。我不知道有什么特殊情况。
  • 我只想指出我已经解决了这个问题。作为故事板的新手,我没有将我的 segue 类型设置为模态一个实例,所以这是一个用户错误!谢谢。
  • 我也试试这个:[self.presentingViewControllerdismissViewControllerAnimated:YES completion:nil] 它也有效,为什么?
  • 呈现视图控制器执行解散。当您将消息发送到呈现的视图控制器时,呈现的视图控制器会自动将消息转发给呈现的视图控制器。
【解决方案2】:

[self dismissViewControllerAnimated:YES completion:nil];是IOS5中的一种新方式

【讨论】:

    【解决方案3】:

    以下应该可以正常工作...

    [self dismissModalViewControllerAnimated:YES];
    

    我在latest tutorial here 中的登录页面正是这样做的,没有任何问题。

    【讨论】:

    • 现在在 iOS7 中已弃用:使用 dismissViewControllerAnimated:completion: 代替。
    【解决方案4】:

    以下代码适用于 swift 3:

     self.dismiss(animated: true, completion: nil)
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2017-09-08
      • 2017-05-13
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多