UINavigationController弹出标题但不弹出控制器

时间:2013-01-09 08:43:05

标签: iphone uinavigationcontroller uiimagepickercontroller

以下是设置:我有一个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:^{}];

我已经确认我的导航控制器不是nil,并且相应的控制器在堆栈中。任何帮助将非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个, 如果使用

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

你必须解雇View with

[imageController dismissViewControllerAnimated:YES completion:nil];

因为popViewController将在使用pushViewController的显示视图时使用

抱歉我的英语不好。

答案 1 :(得分:0)

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

[self.navigationController dismissModalViewControllerAnimated:YES]