我在ios中有两个框架,比如说View1和View2。 View1包含一个表视图。当您点击一个单元格时,您将被重定向到带有您所点击内容的详细信息的View2。
View1连接到了一个标签栏按钮,但是如果我在进入View2后点击该按钮,则会返回View2而不是View1,因此我将以下代码放到View2中:

 -(void) viewWillDisappear:(BOOL)animated{
      [self.navigationController popViewControllerAnimated:NO];
 }


也就是说,当View2消失时弹出到View1,因此如果我返回,则使用标签栏按钮向我显示View1

到目前为止,一切都很好。

现在,在View2内部,有一个链接提供了MFMailComposeController,以便您可以发送邮件。当我从邮件中回来时,该应用程序崩溃了。完全正确的是,viewWillDisappear不会区分是因为您正在设置邮件还是因为导航到另一个View并通过标签栏返回而使View2消失了。
因此,有一种方法可以区分是否正在显示View2,这是因为按下了标签栏按钮还是发生了其他任何事情?

最佳答案

您可以在self.tabBarController.selectedIndex中检查viewDidDisappear。如果索引与视图控制器的索引相同,则无需弹出视图控制器。切换选项卡时,selectedIndex会更改,因此必须弹出视图控制器。

-(void) viewDidDisappear:(BOOL)animated {
      if (self.tabBarController.selectedIndex != correctIndex )
      {
          [self.navigationController popViewControllerAnimated:NO];
      }
}

关于ios - 有一种方法可以知道是否在iOS中点击了“为选项卡显示的 View ”按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28295344/

10-09 10:17