【问题标题】:UINavigation Controller pops title but not controllerUINavigationController 弹出标题但不弹出控制器
【发布时间】:2012-12-23 06:22:37
【问题描述】:

这里是设置:我有一个UIViewController,里面有一个UITableView。触摸其中一个单元格时,会出现一个操作表,提供从您的图库中选择照片或拍摄新照片的选项。无论哪种情况,我都会像这样显示UIImagePickerController

在我的接口声明中

UIImagePickerController* imageController;

在 viewDidLoad 中:

imageController = [[UIImagePickerController alloc] init];
imageController.delegate = self;
imageController.allowsEditing = YES;

在我的操作表委托方法中

if(buttonIndex == 2)
    return;

UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;

if(buttonIndex == 1)
    sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

imageController.sourceType = sourceType;

[self presentModalViewController:imageController animated:YES];

效果很好,并且图像选择器会显示出来。然而,从此时起,导航控制器似乎无法正常工作。我可以打电话

[self.navigationController popViewControllerAnimated:YES];

并且导航栏中的标题会随着标准的弹出动画而改变,但控制器本身不会消失。这仅在图像选择器控制器显示后才会发生。我可以在显示控制器之前取消操作表,完全没有任何问题。

我已经包含了一个短视频的链接,因为这个应用程序已经上线 - 这只是一个重新构建。

http://screencast.com/t/qBolp2v3iCyR

我尝试从导航控制器和标签栏控制器显示模式 - 结果相同。我已经尝试了使用此调用的替代显示方法:

[self presentViewController:imageController animated:YES completion:^{}];

我已验证我的导航控制器不为零,并且适当的控制器在堆栈上。任何帮助将非常感激。提前致谢。

【问题讨论】:

  • 检查你推送视图控制器的代码。可能有问题
  • 当我将控制器推入堆栈时没有什么奇怪的。我打电话给 [self performSegueWithIdentifier:@"SegueName" sender:self]。我的 prepareForSegue 方法并不复杂,只是在目标控制器上设置值。
  • 我也刚刚尝试将 prepareForSegue 方法中的所有内容都注释掉,但它仍在发生。
  • 更新如果我在到达导航堆栈顶部后在选项卡之间切换,我可以让屏幕刷新并且应用程序正常运行。也许导航控制器中的某些东西搞砸了,并且没有调用“viewWillAppear”或“viewWillDisappear”?在此处观看演示视频:screencast.com/t/zKxCwgoz4
  • 解决方案 找到了一个完整的解决方案 - 当图像选择器被关闭时,我切换标签栏控制器的选定标签,然后再返回。这具有导致导航控制器以某种方式重置的效果。我知道 - 这是一个 hack,我仍然不知道到底发生了什么,但它有效!!!

标签: iphone uinavigationcontroller uiimagepickercontroller


【解决方案1】:

试试这个, 如果你用

显示viewController
[self presentModalViewController:imageController animated:YES];

你必须用dismissView

[imageController dismissViewControllerAnimated:YES completion:nil];

因为popViewController在用pushViewController显示视图时会用到

对不起,我的英语不好。

【讨论】:

  • 感谢您的建议,但我仍然遇到同样的问题。
【解决方案2】:

要关闭使用presentModalViewController:animated: 添加的控制器,您应该使用

[self.navigationController dismissModalViewControllerAnimated:YES]

【讨论】:

  • 我刚试过这个,我仍然有同样的问题。不过还是谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 2011-09-28
相关资源
最近更新 更多