ios故事板 – closures模式?

使用故事板什么是解除模式的正确方法?

  • 使用IBAction和编写代码解雇后点击button?
  • 使用segue并在点击button后通知父视图控制器?

看到这里closures一个呈现的视图控制器大约一半

当需要closures一个呈现的视图控制器时,首选的方法是让呈现视图控制器closures它。

所以你应该使用一个IBAction和编写代码来解雇一下button

在这里看到我的答案。 它给你两种方式来解除故事板的模式视图控制器。 我喜欢方法二描述,因为你在你的项目中添加类,你可以完成没有代码单独使用情节提要。 这就是说,如果你已经实现了一个委托和委托协议,这也是一个放置dismissModalViewController语句的好地方。

我发现,通常当我试图在故事板中做到这一点,我宁愿不创build额外的类。 从呈现视图控制器执行解除操作仍然是有意义的,因此需要一个类来支持它。

如果您在呈现视图控制器中创build一个IBAction,并将其命名为例如

- (IBAction)dismissAnyModel:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; } 

然后,从故事板,无论你想触发解雇从你创build一个行动,第一响应者如下所示。 您可以通过为IBActions创build唯一名称来扩展此function,以便与多个呈现视图控制器一起工作。

创建一个出口给第一响应者

选择正确的IBAction

有关第一响应者和响应者链的更多信息

根据Alex Cio对Swift 3XCode 8.3回答:

创build课程:

 import UIKit class DismissSegue: UIStoryboardSegue { override func perform() { self.source.presentingViewController?.dismiss(animated: true, completion: nil) } } 

但在故事板中,您应该select:

行动Segue – >自定义 – >解雇

只有在Action Segue菜单上出现此选项后

要在UIStoryboard内部执行此操作, UIStoryboard需要在项目中创buildUIStoryboardSeguetypes的对象

创建一个新类的类<code> UIStoryboardSegue </ code>

然后在类中插入以下方法。 这是我的class

@implementation DismissController

 - (void)perform{ UIViewController *sourceVC = self.sourceViewController; [sourceVC.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } 

现在你可以在你的UIStoryboard使用它。 select应该使UIViewController消失的button,并将其拖到你想要去的UIViewController 。 在我的情况下,它显示**因为我的class级的名称而不考虑控制器*。

在这里输入图像说明

select它,你就完成了! 在这个网站上也有很好的解释。

正如苹果在线文档所指出的那样,呈现视图控制器负责解除模态(呈现)视图。

这里有一个post和例子