有一种方法可以知道是否在 ios 中点击了标签栏按钮的视图?

There's a way to know if a View appeared for tabbar button has been tapped in ios?

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

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

也就是说,当 View2 消失时弹出到 View1,所以如果我 return 返回,使用 tabbar 按钮我将显示 View1

到目前为止,还不错。

现在,在 View2 中有一个 link 呈现 MFMailComposeController 以便您可以发送邮件。当我从邮寄回来时,应用程序崩溃了。这是完全正确的,因为 viewWillDisappear 不会区分 View2 是否正在消失,因为您正在设置邮件或导航到另一个视图并通过标签栏返回。 那么,有一种方法可以区分是否正在显示 View2 以按下标签栏按钮或发生其他任何事情?

您可以在 viewDidDisappear 中查看 self.tabBarController.selectedIndex。如果索引与视图控制器的索引相同,则不需要弹出视图控制器。当您切换选项卡时,selectedIndex 发生变化,因此必须弹出视图控制器。

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