0

我在视图cameraOverlay上分配了一个自定义UIImagePickerDelegate(在本例中为 a UITabViewController)。

在委托方法中:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

    SelectPhotoTypeViewController *destinationController = [self.storyboard instantiateViewControllerWithIdentifier:@"SelectPhotoTypeView"];

    destinationController.image = [info objectForKey:UIImagePickerControllerOriginalImage] forKey:@"image"];

    [picker pushViewController:destinationController animated:YES];
}

当它运行时,它SelectPhotoTypeViewController被推送到(因为它继承自)。我在 中选择一种照片类型,然后用 推动a 。在此视图中,第一行隐藏在.NavigationControllerUIImagePickerUINavigationControllerSelectPhotoTypeViewControllerUIViewControllerUITableViewUITableViewUINavigationBar

这仅在从图库中选择图像(即拍照)时发生,cameraOverlay但在从图库中选择图像时不会发生。可能是什么原因?

4

2 回答 2

0

我认为这是因为状态栏的错误。每次推送时,您需要隐藏状态栏并在控制器内部再次显示状态栏。

像这样的东西:

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [picker dismissModalViewControllerAnimated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];

或者推的时候..

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [picker pushViewController:destinationController animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];

当您为照片推送视图控制器时执行此操作。

于 2013-06-03T19:12:30.743 回答
0

我终于整理好了。我用 s 替换了目标UIViewControllers,UITableViewController现在一切正常。换句话说,我有UIViewController一个 s ,由于某种原因,当来自相机视图时,UITableView它被覆盖了。UINavigationBar所有约束都设置正确,所以我不知道为什么会这样。我将此标记为答案,因为它是一个解决方案,但不幸的是,我不知道发生这种情况的原因,也许就像@Juan Munhoes Junior 所说的那样,这是一个状态栏错误。

于 2013-06-04T13:43:35.043 回答