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,以便与多个呈现视图控制器一起工作。
有关第一响应者和响应者链的更多信息
根据Alex Cio对Swift 3
和XCode 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
需要在项目中创buildUIStoryboardSegue
types的对象
然后在类中插入以下方法。 这是我的class
@implementation DismissController
- (void)perform{ UIViewController *sourceVC = self.sourceViewController; [sourceVC.presentingViewController dismissViewControllerAnimated:YES completion:nil]; }
现在你可以在你的UIStoryboard
使用它。 select应该使UIViewController
消失的button,并将其拖到你想要去的UIViewController
。 在我的情况下,它显示**因为我的class级的名称而不考虑控制器*。
select它,你就完成了! 在这个网站上也有很好的解释。
正如苹果在线文档所指出的那样,呈现视图控制器负责解除模态(呈现)视图。
这里有一个post和例子