【问题标题】:How to dismiss camera and navigating to the root view controller?如何关闭相机并导航到根视图控制器?
【发布时间】:2012-04-03 06:04:05
【问题描述】:

我创建了 3 个视图。 第一个视图是主页,第二个是库存视图,第三个是叠加视图。 现在使用 pushviewcontroller 从主屏幕导航到库存视图屏幕。 在库存视图中,我有一个捕获按钮。捕获按钮将在叠加视图上打开相机。 现在的问题是覆盖视图中有一个称为返回按钮的按钮,当我单击此按钮时,我想导航到主屏幕,但为此我需要首先关闭相机。这怎么可能?

库存视图中的捕获按钮

   -(IBAction) btnCapture:(id) sender
   {
     @try 
     {
          [self showImagePicker:UIImagePickerControllerSourceTypeCamera]; 
     }
      @catch (NSException *exception) 
      {
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Camera" message:@"Camera is not available  " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
         [alert show];
         [alert release];
      }
}

在 OverlayView 后退按钮事件中:

    -(IBAction)btnBack:(id)sender
     {
          app.navcntr=1;
          [self.delegate didFinishWithCamera];
          [self dismissModalViewControllerAnimated:YES];
      }

在库存视图中,viewWillAppear

   -(void) viewWillAppear:(BOOL)animated
    {
          if(app.navcntr ==1)
          {
                [self.navigationController popToRootViewControllerAnimated:YES];
          }
           app.navcntr=0;
   }

问题是它正在导航到主屏幕,但应用程序崩溃了。 如何解决?

谢谢。

【问题讨论】:

  • 用一些代码编辑你的问题
  • 你是否使用模态视图来显示相机?
  • 请提供崩溃日志。发布崩溃日志。
  • @komal 如何在推送视图后推送该视图检查您释放该视图控制器...

标签: iphone ios ipad


【解决方案1】:

我认为您试图关闭您的相机视图两次。我的意思是didFinishWithCamera 方法会忽略它。删除[self dismissModalViewControllerAnimated:YES];这一行

-(IBAction)btnBack:(id)sender
     {
          app.navcntr=1;
          [self.delegate didFinishWithCamera];              
     }

已编辑

当您不在屏幕上时(“将出现”),您不应执行动画。

把你的代码写在viewDidAppearlike

-(void) viewDidAppear:(BOOL)animated
    {
          [super viewDidAppear:animated];

          if(app.navcntr ==1)
          {
                [self.navigationController popToRootViewControllerAnimated:YES];
          }
           app.navcntr=0;
   }

【讨论】:

  • wait_fences:收不到回复:10004003
  • @komalmehta:这是什么?崩溃日志??
【解决方案2】:

您需要从拥有 UIImagePickerController 的控制器中关闭模态视图控制器。

-(IBAction)whilePoppingBack:(id)sender{
    [controllerWhichContainsPicker dismissModalViewControllerAnimated:YES];
}

//完成后,您可以通过popToRootViewController方法愉快地导航到主视图控制器。

PS 注意:查找 controllerWhichContainsPicker 是另一回事,这取决于您创建的视图层次结构,基于您需要先关闭它,稍后您需要执行其他操作,例如导航和其他视图操作。

//另一件事是我怀疑是内存泄漏(正如你在这里提到的:wait_fences: failed to receive reply: 10004003)。尝试运行仪器工具或 NSZombie 或 NSMallocGaurd 以启用并尝试找出泄漏的位置,如果上面的代码似乎没有解决问题。

如果你能摆脱它,请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 2020-10-21
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2019-08-04
    相关资源
    最近更新 更多