我有一个要重复使用的视图控制器。我想在编辑一些数据时将它与push segue一起使用,并且我想在添加新数据时以模态方式呈现它。在模态显示时,我确实需要在顶部有一个带有取消和保存按钮的栏。在另一种情况下,我只需要保存按钮。
显然,只有在我使用 push segue 时才会显示栏(和按钮)。
有没有办法重新使用这个 View Controller 并能够同时使用推送和模态 segue?
我有一个要重复使用的视图控制器。我想在编辑一些数据时将它与push segue一起使用,并且我想在添加新数据时以模态方式呈现它。在模态显示时,我确实需要在顶部有一个带有取消和保存按钮的栏。在另一种情况下,我只需要保存按钮。
显然,只有在我使用 push segue 时才会显示栏(和按钮)。
有没有办法重新使用这个 View Controller 并能够同时使用推送和模态 segue?
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.
你有 2 个不同的场景,一个你想要推送,另一方面你想使用 segue 访问它,所以,你可以为此使用标志。您可以设置一个标志,并且根据标志值您可以设置按钮,也可以将其推送和 segues 作为标志的值。
在 .h 文件中:
BOOL flagForVc; // by default its 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
}