【问题标题】:hide second viewcontroller and navigate to third viewcontroller隐藏第二个视图控制器并导航到第三个视图控制器
【发布时间】:2011-11-29 04:48:31
【问题描述】:

我在ViewControllerA和其他ViewControllerB也加载在viewcontroller的stack.viewControllerB也有摄像头屏幕。 从ViewControllerA 我通过以下代码调用ViewControllerB

AppNameAppDelegate *appDelegate = (AppNameAppDelegate *)[[UIApplication sharedApplication] delegate];
ViewControllerB *l_ViewControllerB = [appDelegate ViewControllerB];
l_ViewControllerB.view.hidden = NO;
[self.navigationController pushViewController:l_ViewControllerB animated:YES];

现在从ViewControllerB,我想切换到ViewControllerC

self.view.hidden = YES;
ViewControllerC *l_ViewControllerC = [[ViewControllerC alloc] init];
[self.navigationController pushViewController:l_ViewControllerC animated:YES];
[l_ViewControllerC release];

但它导航到 ViewControllerA 我不需要,所以我需要帮助,如何导航到 ViewControllerC 而不显示 ViewControllerA

更新: ViewControllerB 在 ViewControllerB.mm 文件中定义,在 ViewControllerB.mm 文件中还涉及到一些 C++ 编码。 这会对 ViewControllerB 中定义的 ViewControllerB.m 或 ViewControllerB.mm 文件有什么不同吗?

【问题讨论】:

  • 你为什么要隐藏那个视图控制器的视图?
  • 你的ViewControllerC没有xib吗?
  • 我正在隐藏 ViewControllerB 的视图,因为它有相机覆盖屏幕,我想隐藏/取消隐藏以打开/关闭相机覆盖屏幕。
  • @Gypsa ViewControllerC 有 xib,我也试过这个 ViewControllerC *l_ViewControllerC = [[ViewControllerC alloc]initWithNibName:@"ViewControllerC" bundle:[NSBundle mainBundle]];

标签: iphone objective-c uiviewcontroller navigation pushviewcontroller


【解决方案1】:

你应该删除这两行,除非有一些你没有提到的原因:

// in ViewControllerA:
l_ViewControllerB.view.hidden = NO;

// in ViewControllerB:
self.view.hidden = YES;

【讨论】:

  • 我正在隐藏 ViewControllerB 的视图,因为它有摄像头覆盖屏幕,我想隐藏/取消隐藏以打开/关闭摄像头覆盖屏幕。我正在使用条码扫描 sdk 来扫描条码,而 ViewControllerB 属于到条码扫描SDK。
  • 你试过不隐藏吗?有没有办法只隐藏覆盖而不是整个视图层次结构?
  • 我正在使用 i_nigma 扫描 sdk,在其中我无法访问相机覆盖。
【解决方案2】:

也许在导航到ViewControllerB时,i_nigma sdk 正在创建一个新线程。这就是为什么如果您尝试从 ViewControllerB 导航到您无法导航的任何其他视图,除了已经可见的 ViewControllerA。 您可以尝试在 UI 主线程上执行该操作,以便任何 UI 更改都反映在您的 UI 应用程序中。您可以尝试performSelectorOnMainThread,如下所示。

[self performSelectorOnMainThread:@selector(operationComplete) withObject:nil waitUntilDone:false];

您可以参考thisthis1

【讨论】:

    【解决方案3】:

    请尝试this可能对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多