【问题标题】:Back button handling from a view in both present and push从当前视图和推送视图中处理后退按钮
【发布时间】:2017-07-27 09:20:27
【问题描述】:

我有一个 UIViewControllerC,它是从另外两个 UIViewcontroller 调用的

ViewControllerA 视图控制器B

从 ViewControllerA 到 UIViewControllerC 我必须让它呈现视图控制器

 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];

现在我必须从后退按钮上的两个视图中返回,我检查标签条件并处理它

-(IBAction)backBtn:(id)sender
{
 if ([tagfrom isEqualToString:@"present"])
  {
    [self dismissViewControllerAnimated:NO completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}

} 

在两种情况下都可以正常工作,但有时我的推送视图表现得像 presentmodelveiw,并且没有过渡效果,请帮我解决它

【问题讨论】:

  • 反对什么?
  • 你可以为presentViewController设置ModalTransitionStyle,但不能为pushViewController设置
  • 检查案例 1) 推送和 2) 将视图呈现给同一视图
  • 移除 [vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];用于案例 2(B 到 C)中的推送视图控制器
  • 不,伙计....你不懂我....但感谢支持

标签: ios objective-c iphone uinavigationcontroller presentviewcontroller


【解决方案1】:

首先,您的UIViewController 子类不需要tagfrom 属性。

UIViewController 实例有一个名为 presentingViewController 的属性,它将让您了解呈现当前 viewControllerviewController(在您的情况下为 A)(在你的情况)。

-(IBAction)backBtn:(id)sender
{
   if (nil != self.presentingViewController) {
      [self dismissViewControllerAnimated:NO completion:nil];
   }
   else {
      [self.navigationController popViewControllerAnimated:YES];
   }
} 

其次,modalTransitionStyle 应该与 only presentationNOT push / pop 转换一起使用。如果您将其与push / pop 一起使用,则行为未定义,因为它不打算在那里使用。

【讨论】:

  • 对 line->modalTransitionStyle 的投票应该只适用于演示文稿,而不适用于推送/弹出
  • @iphonemaclover 赏金?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多