2

我有一个要重复使用的视图控制器。我想在编辑一些数据时将它与push segue一起使用,并且我想在添加新数据时以模态方式呈现它。在模态显示时,我确实需要在顶部有一个带有取消和保存按钮的栏。在另一种情况下,我只需要保存按钮。

显然,只有在我使用 push segue 时才会显示栏(和按钮)。

有没有办法重新使用这个 View Controller 并能够同时使用推送和模态 segue?

4

3 回答 3

2

You can do it as Mital says but if you dont want to add a Bool try this:

if(self.presentingViewController != nil)
{
    //VC is presented modally
}

else
{
   //VC is pushed
}

It works as a charm for me.

于 2013-06-19T08:02:35.633 回答
1

你有 2 个不同的场景,一个你想要推送,另一方面你想使用 segue 访问它,所以,你可以为此使用标志。您可以设置一个标志,并且根据标志值您可以设置按钮,也可以将其推送和 segues 作为标志的值。

在 .h 文件中:

BOOL flagForVc; // by default its 0 

您可以使用此标志进行检查并根据需要显示。

于 2013-06-19T07:05:02.887 回答
0

只需将您的destinationController 嵌入到不同的navigationController 中,例如与原始navigationController 分开的newNavigation。当你推动使用:

[self.navigationController pushViewController:destinationController animated:YES]; 

它将显示顶部栏。将所有按钮等保留在此导航栏上。当您希望它成为模态时,只需使用:

[self presentViewController:newNavigation animated:YES]

并根据情况根据需要配置您的 barbutton 项目。

您可以通过检查来检查它是模态还是推送segue

if ([[[self.navigationController viewControllers] objectAtIndex:0] isEqual:self]) {
    //modal related code
} else {
    // push related code
}
于 2013-06-19T09:18:16.643 回答