使用故事板,解雇模态的正确方法是什么?
答案 0 :(得分:23)
见到这里Dismissing a Presented View Controller大约一半
当解雇一个呈现的视图控制器时,首选方法是让呈现视图控制器忽略它。
因此,您应该使用IBAction并在单击按钮后编写代码以解除
答案 1 :(得分:12)
我发现,通常当我试图在故事板中这样做时,我宁愿不创建额外的课程。从呈现视图控制器执行dismiss仍然是有意义的,因此需要一个类来支持它。
如果在呈现视图控制器中创建IBAction并对其进行适当命名,例如
- (IBAction)dismissAnyModel:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
然后从故事板中,如果您想触发解雇,请向第一响应者创建一个动作,如下所示。您可以通过为IBActions创建唯一名称来扩展它以使用多个呈现视图控制器。
答案 2 :(得分:10)
请参阅我的回答here。它为您提供了两种使用storyboard关闭模态视图控制器的方法。我喜欢方法二描述,因为你在项目中添加类,你可以在没有使用故事板的代码的情况下完成模态视图的返回。也就是说,如果您已经实现了委托和委托协议,那么它也是放置dismissModalViewController语句的好地方。
答案 3 :(得分:10)
根据Alex Cio回答Swift 3
和XCode 8.3
:
创建课程:
import UIKit
class DismissSegue: UIStoryboardSegue {
override func perform() {
self.source.presentingViewController?.dismiss(animated: true, completion: nil)
}
}
但在故事板中你应该选择:
动作瞄准 - >自定义 - >驳回
仅在Action Segue
菜单
答案 4 :(得分:7)
要在UIStoryboard
内执行此操作,首先需要在项目中创建UIStoryboardSegue
类型的对象
然后在类中插入以下方法。这是我的班级
@implementation DismissController
- (void)perform{
UIViewController *sourceVC = self.sourceViewController;
[sourceVC.presentingViewController dismissViewControllerAnimated:YES
completion:nil];
}
现在您可以在UIStoryboard
内使用它了。选择应使UIViewController
消失的按钮并将其拖动到您要转到的UIViewController
。在我的情况下,由于我的班级名称,它显示**解雇Controller *。
选择它,你就完成了! 还有一个很好的解释on this website.
答案 5 :(得分:-1)
正如Apple在线文档所示,呈现视图控制器负责解除模态(呈现)视图。
有一个帖子和例子可用 here