Iphone 删除实际的navigationController并推送到另一个
我有两个视图控制器A和B 我想从控制器A推送到控制器B,然后它;It’很好 现在在控制器B中,我有了“加号”按钮,它将我推到另一个B控制器(同一个ViewController)。现在,当我在secontr B viewController中时,当我按下后退按钮时,我应该被弹出到一个viewController。所以我想知道当我按下另一个viewController时如何移除viewController 情况是这样的: A(推B)->B(推B)->B(推B)->B(弹出B)->AIphone 删除实际的navigationController并推送到另一个,iphone,ios,uiviewcontroller,Iphone,Ios,Uiviewcontroller,我有两个视图控制器A和B 我想从控制器A推送到控制器B,然后它;It’很好 现在在控制器B中,我有了“加号”按钮,它将我推到另一个B控制器(同一个ViewController)。现在,当我在secontr B viewController中时,当我按下后退按钮时,我应该被弹出到一个viewController。所以我想知道当我按下另一个viewController时如何移除viewController 情况是这样的: A(推B)->B(推B)->B(推B)->B(弹出B)->A 谢谢您的帮助。解
谢谢您的帮助。解决方案将位于
PoptrootViewController:
在B3控制器上完成后调用此方法
因此,它将是:
A(pushViewController B1)->B1(pushViewController B2)->B2(pushViewController B3)->B3(PoptrootViewController:)->A
这对您有帮助吗?解决方案将位于
PoptrootViewController:
在B3控制器上完成后调用此方法
因此,它将是:
A(pushViewController B1)->B1(pushViewController B2)->B2(pushViewController B3)->B3(PoptrootViewController:)->A
这对你有帮助吗?试试看
[self.navigationController popToRootViewControllerAnimated:YES];
或
试试看
[self.navigationController popToRootViewControllerAnimated:YES];
或
试试这个
id tempViewCont=nil;
for(id viewCont in [self.navigationController viewControllers])
{
if([viewCont isKindOfClass:[A class]])
{
tempViewCont=viewCont;
break;
}
}
if(tempViewCont)
{
[self.navigationController popToViewController:tempViewCont animated:yes];
}
试试这个
id tempViewCont=nil;
for(id viewCont in [self.navigationController viewControllers])
{
if([viewCont isKindOfClass:[A class]])
{
tempViewCont=viewCont;
break;
}
}
if(tempViewCont)
{
[self.navigationController popToViewController:tempViewCont animated:yes];
}
如果只按一次view controller A,可以尝试以下操作:
NSArray *tempArray = [self.navigationController viewControllers];
for (id viewController in tempArray) {
if ([viewController isKindOfClass:A]) {
[self.navigationController popToViewController:viewController animated:yes];
break;
}
}
希望这有帮助。如果只按一次view controller A,可以尝试以下操作:
NSArray *tempArray = [self.navigationController viewControllers];
for (id viewController in tempArray) {
if ([viewController isKindOfClass:A]) {
[self.navigationController popToViewController:viewController animated:yes];
break;
}
}
希望这能有所帮助。虽然所有其他答案都不错,但在我看来,问题是你是否应该从
B
复制到另一个版本。对我来说,这个问题的答案是:你是否想从一个B
弹出到前面的B
。如果是这样的话,当您想返回到A
时,可以使用另一个poptrootviewcontrolleranimated
或popToViewController
答案
如果不是,您根本不应该从B
复制到另一个副本。但是,如果您想向用户演示“让我们再做一次”按钮,您可以使用transitionWithView
。例如,如果我们假设您在B
上有一组UITextField
控件,并且您有一个“添加另一个”按钮,它可能会执行以下操作:
- (IBAction)onPressAddButton:(id)sender
{
// save the record here
// now, let's animate the resetting of the text fields
[UIView transitionWithView:self.view
duration:0.5
options:UIViewAnimationOptionTransitionCurlUp
animations:^{
self.textField1.text = nil;
self.textField2.text = nil;
self.textField3.text = nil;
}
completion:nil];
}
顺便说一句,如果你这样做的话,你现在就不必做任何想从B回到A的事情了。标准导航栏做了我们需要的一切。虽然所有其他答案都很好,但在我看来,问题是你是否应该从
B
推到它自己的另一个副本。对我来说,这个问题的答案是:你是否想从一个B
弹出到前面的B
。如果是这样的话,当您想返回到A
时,可以使用另一个poptrootviewcontrolleranimated
或popToViewController
答案
如果不是,您根本不应该从B
复制到另一个副本。但是,如果您想向用户演示“让我们再做一次”按钮,您可以使用transitionWithView
。例如,如果我们假设您在B
上有一组UITextField
控件,并且您有一个“添加另一个”按钮,它可能会执行以下操作:
- (IBAction)onPressAddButton:(id)sender
{
// save the record here
// now, let's animate the resetting of the text fields
[UIView transitionWithView:self.view
duration:0.5
options:UIViewAnimationOptionTransitionCurlUp
animations:^{
self.textField1.text = nil;
self.textField2.text = nil;
self.textField3.text = nil;
}
completion:nil];
}
顺便说一句,如果你这样做的话,你现在就不必做任何想从B回到A的事情了。标准导航栏做了我们需要的一切。我的A控制器不是rootViewController,所以它不起作用,所以你可以使用这个解决方案:
[self.navigationController popToViewController:A viewcontroller动画:是]代码>我的A控制器不是rootViewController,因此它不起作用,因此您可以使用此解决方案:[self.navigationController popToViewController:A viewcontroller动画:是]
@edzio27:另外,如果堆栈中有多个A控制器&您希望弹出到稍后推送的A,那么您需要以相反的顺序遍历循环(您需要使用for/while循环)。为此,感谢Ishu。我也在这个主题@edzio27中找到了帮助:另外,如果堆栈中有多个A控制器&您希望稍后弹出到A,那么您需要以相反的顺序遍历循环(您需要使用for/while循环)。感谢Ishu。我也在这个主题+1中找到了帮助,但是,与公认的答案一样,这会找到第一个出现的A
,如果您需要最后一个,您必须调整。显然,如果您想要第一个,那就是初始视图控制器,那么您只需执行poptrootviewcontrolleranimated
+1,但是,与公认的答案一样,这会找到第一个出现的A
,如果您需要最后一个,则必须进行调整。显然,如果您想要第一个,那就是初始视图控制器,那么您只需执行popToRootViewControllerAnimated
。