使用故事板时解雇模态的正确方法是什么?

时间:2012-02-21 17:22:55

标签: ios storyboard modal-dialog

使用故事板,解雇模态的正确方法是什么?

  • 使用IBAction并在单击按钮后编写代码以解除?
  • 使用segue并在点击按钮后通知父视图控制器?

6 个答案:

答案 0 :(得分:23)

见到这里Dismissing a Presented View Controller大约一半

  

当解雇一个呈现的视图控制器时,首选方法是让呈现视图控制器忽略它。

因此,您应该使用IBAction并在单击按钮后编写代码以解除

答案 1 :(得分:12)

我发现,通常当我试图在故事板中这样做时,我宁愿不创建额外的课程。从呈现视图控制器执行dismiss仍然是有意义的,因此需要一个类来支持它。

如果在呈现视图控制器中创建IBAction并对其进行适当命名,例如

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

然后从故事板中,如果您想触发解雇,请向第一响应者创建一个动作,如下所示。您可以通过为IBActions创建唯一名称来扩展它以使用多个呈现视图控制器。

Create an outlet to first responder

Select correct IBAction

More information on first responder and the responder chain

答案 2 :(得分:10)

请参阅我的回答here。它为您提供了两种使用storyboard关闭模态视图控制器的方法。我喜欢方法二描述,因为你在项目中添加类,你可以在没有使用故事板的代码的情况下完成模态视图的返回。也就是说,如果您已经实现了委托和委托协议,那么它也是放置dismissModalViewController语句的好地方。

答案 3 :(得分:10)

根据Alex Cio回答Swift 3XCode 8.3

创建课程:

import UIKit

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

但在故事板中你应该选择:

  

动作瞄准 - >自定义 - >驳回

仅在Action Segue菜单

上显示此选项后

答案 4 :(得分:7)

要在UIStoryboard内执行此操作,首先需要在项目中创建UIStoryboardSegue类型的对象

Creating a new class of type <code>UIStoryboardSegue</code>

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

@implementation DismissController

- (void)perform{

    UIViewController *sourceVC = self.sourceViewController;
    [sourceVC.presentingViewController dismissViewControllerAnimated:YES 
                                                          completion:nil]; 
}

现在您可以在UIStoryboard内使用它了。选择应使UIViewController消失的按钮并将其拖动到您要转到的UIViewController。在我的情况下,由于我的班级名称,它显示**解雇Controller *。

enter image description here

选择它,你就完成了! 还有一个很好的解释on this website.

答案 5 :(得分:-1)

正如Apple在线文档所示,呈现视图控制器负责解除模态(呈现)视图。

有一个帖子和例子可用 here