如何在Objective C中关闭对话框窗口

时间:2016-02-22 21:17:13

标签: ios objective-c viewcontroller

我有viewcontroller A,点击按钮,我打开了另一个视图控制器,其演示样式为Form表格。在打开的第二个视图控制器中有两个按钮。现在,当单击这些按钮时,第二个视图控制器应该消失,下一个视图控制器应该在视图控制器A的顶部打开。但是当我在下面尝试时,另一个视图控制器在对话框内打开 我不知道如何放松这个segue并一起调用另一个场景。

2 个答案:

答案 0 :(得分:0)

Nitya,您是否尝试使用以下代码来关闭当前视图控制器。在要关闭viewController的按钮的IBAction中使用它: -

self.dismissViewControllerAnimated(true, completion: nil)

答案 1 :(得分:0)

所以你有一个带有按钮的根视图控制器A.如果点击该按钮,其他视图控制器(我们将其命名为B)由A显示为表单。 B有两个按钮,如果你点击其中一个按钮,B应该被解雇, 之后一个不同的视图控制器(让我们说C)sh由A呈现。

Apple并不真正推荐这种工作流程,但是可以实现它。您可以考虑使用导航控制器或主控细节控制器来代替此。但是,如果你坚持你最初的想法,这里有一些可能的实现:

1。 如果您正在使用故事板并且B上的按钮触发了一个展开的segue到A,那么您可以将其添加到展开seque动作的末尾:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"segueThatPresentsC" sender:nil];
});

2。 如果以编程方式显示viewcontrollers,则: 在从A中呈现B之前,您可以配置B的按钮,使得ist target为A,并且其操作是在A中定义的方法:

- (void) dismissAndPresentC {
    [self dismissViewControllerAnimated:YES completion:^{
        [self presentViewController:instanceOfC animated:YES completion:nil];
    }];
}

这第二个可能是一个小小的黑客,但仍然是一个令人困惑的概念。