从当前视图和推送视图处理后退按钮
Back button handling from a view in both present and push
我有一个 UIViewControllerC,它是从另外两个 UIViewcontroller 调用的
ViewControllerA
ViewControllerB
从 ViewControllerA 转到 UIViewControllerC 我必须让它成为 presentviewcontroller
UIViewControllerC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"UIViewControllerC"];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
vc.tagfrom=@"present";
[self presentViewController:vc animated:NO completion:nil];
从 ViewControllerB 转到 UIViewControllerC 我必须让它推送视图
UIViewControllerC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"UIViewControllerC"];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
vc.tagfrom=@"push";
[self.navigationController pushViewController:vc animated:YES];
现在我必须从后退按钮的两个视图中返回,我检查 tagfrom 条件并处理它
-(IBAction)backBtn:(id)sender
{
if ([tagfrom isEqualToString:@"present"])
{
[self dismissViewControllerAnimated:NO completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}
两个senerio都可以正常工作,但有时我的推送视图表现得像presentmodelveiw,并且没有过渡效果,请帮助我解决它
首先,您的 UIViewController
子类不需要 tagfrom
属性。
A UIViewController
实例有一个名为 presentingViewController
的 属性,它将让您了解 viewController
(在您的案例中为 A ) 表示电流 viewController
( C 在你的情况下 )。
-(IBAction)backBtn:(id)sender
{
if (nil != self.presentingViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
else {
[self.navigationController popViewControllerAnimated:YES];
}
}
其次,modalTransitionStyle
应该与 一起工作 presentation
和 NOT push / pop
过渡。如果您将此与 push / pop
一起使用,则行为未定义,因为它不打算在那里使用。
我有一个 UIViewControllerC,它是从另外两个 UIViewcontroller 调用的
ViewControllerA ViewControllerB
从 ViewControllerA 转到 UIViewControllerC 我必须让它成为 presentviewcontroller
UIViewControllerC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"UIViewControllerC"];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
vc.tagfrom=@"present";
[self presentViewController:vc animated:NO completion:nil];
从 ViewControllerB 转到 UIViewControllerC 我必须让它推送视图
UIViewControllerC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"UIViewControllerC"];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
vc.tagfrom=@"push";
[self.navigationController pushViewController:vc animated:YES];
现在我必须从后退按钮的两个视图中返回,我检查 tagfrom 条件并处理它
-(IBAction)backBtn:(id)sender
{
if ([tagfrom isEqualToString:@"present"])
{
[self dismissViewControllerAnimated:NO completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}
两个senerio都可以正常工作,但有时我的推送视图表现得像presentmodelveiw,并且没有过渡效果,请帮助我解决它
首先,您的 UIViewController
子类不需要 tagfrom
属性。
A UIViewController
实例有一个名为 presentingViewController
的 属性,它将让您了解 viewController
(在您的案例中为 A ) 表示电流 viewController
( C 在你的情况下 )。
-(IBAction)backBtn:(id)sender
{
if (nil != self.presentingViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
else {
[self.navigationController popViewControllerAnimated:YES];
}
}
其次,modalTransitionStyle
应该与 一起工作 presentation
和 NOT push / pop
过渡。如果您将此与 push / pop
一起使用,则行为未定义,因为它不打算在那里使用。