我有一个想要重复使用的View Controller。我想在编辑某些数据时使用推送 segue,并且当添加时我想要模态新数据。 在模态呈现时,我需要在顶部有一个“取消”和“保存”按钮。在其他情况下我只需要保存按钮。
显然,只有当我使用push segue时才会显示条形图(和按钮)。
有没有办法重新使用这个视图控制器,并能够使用推送和模态segue?
答案 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]
根据具体情况配置您需要的条形图项目。
您可以通过检查
来检查它是模态还是推送segueif ([[[self.navigationController viewControllers] objectAtIndex:0] isEqual:self]) {
//modal related code
} else {
// push related code
}