重复使用具有推送和模态segue的View Controller

时间:2013-06-19 06:59:13

标签: iphone ios objective-c xcode ios6

我有一个想要重复使用的View Controller。我想在编辑某些数据时使用推送 segue,并且当添加时我想要模态新数据。 在模态呈现时,我需要在顶部有一个“取消”和“保存”按钮。在其他情况下我只需要保存按钮。

显然,只有当我使用push segue时才会显示条形图(和按钮)。

有没有办法重新使用这个视图控制器,并能够使用推送和模态segue?

3 个答案:

答案 0 :(得分:2)

你可以像Mital所说的那样做,但如果你不想添加Bool,试试这个:

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

else
{
   //VC is pushed
}

它对我来说是一种魅力。

答案 1 :(得分:1)

你有两个不同的场景,一个你想推,另一方面你想使用segue访问它,所以,你可以使用标志。你可以设置一个标志,按照标志值,你可以设置按钮,也可以按下和segue作为你的标志值。

在.h文件中

BOOL flagForVc; // by default its 0 

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

答案 2 :(得分:0)

将destinationController嵌入到另一个navigationController中,比如原始的navigationController,newNavigation。使用时推送:

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

它将显示顶部栏。将所有按钮等保留在此导航栏上。 如果你想要它是模态的,只需使用:

[self presentViewController:newNavigation animated:YES]

根据具体情况配置您需要的条形图项目。

您可以通过检查

来检查它是模态还是推送segue
if ([[[self.navigationController viewControllers] objectAtIndex:0] isEqual:self]) {
    //modal related code
} else {
    // push related code
}