2011-05-13 75 views
0

我正在创建基于窗口的应用程序(由于我喜欢通用应用程序的组织方式,因此我使用基于窗口的应用程序),但是我遇到了UIImagePickerControllerSourceTypeCamera问题。我想有两个观点:UIImagePickerController相机错误? (看起来像是“发回”)

父视图:菜单屏幕 副视点:在这里你可以选择从一个画廊的照片或在这里您可以用相机屏幕拍摄照片

的主要问题是,当我按下按钮以使用相机拍摄照片时,它可以工作,并且我可以看到相机控制,而且我甚至可以拍摄没有问题的照片。但是,无论父视图中的对象是否覆盖“查看视图”屏幕。 (即,如果我将相机指向花朵,我可以在屏幕上看到花朵,但是从父视图中叠​​加了按钮和图像浏览,我希望这很有意义)。

我将ImagePickerController添加为模态视图。你可以看到下面的代码。当我从相册中选择照片时,它似乎工作正常,但是当我尝试使用相机拍摄照片时,就好像它被发送到所有内容的背面。

-(IBAction)setImage:(id)sender{ 

  UIImagePickerController* picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 

 if((UIButton *) sender == ChoosePhoto) { 
     picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
 } else { 
        picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
 } 

  [self presentModalViewController:picker animated:YES]; 

} 

也许我只是缺少一些真正明显的东西。任何帮助将不胜感激。谢谢!

回答

0

这听起来像你把所有的“子视图”放到UIWindow中,而不是放到根视图控制器的视图中。不要这样做,将它们添加到根视图控制器的视图。

+0

感谢您的回复!对不起,如果这是一个非常愚蠢的问题,但你是什么意思的根视图控制器。你是说使用多个UIWindows而不是子视图吗?对不起,只是有点困惑= \ – user744349 2011-05-14 04:53:01

+0

@ user744349:不。在顶层,你有一个UIWindow对象。在4.0及更高版本中,你不应该为自己添加任何视图,只需设置'rootViewController'属性(在4.0之前,你只需在'applicationDidFinishLaunching:'中做一次'[window addSubview:myRootViewController.view]') 。在IB中,窗口中不应该有任何子视图。您分配给窗口的'rootViewController'属性的UIViewController对象是您的根视图控制器。它有一个'view'属性。您应该将您的子视图添加到* that *视图中,无论是在IB中还是以编程方式。 – Anomie 2011-05-14 12:49:35

+0

我认为我越来越接近做这项工作。我研究并发现,就像你说的,4.0以前使用'[window addSubview:viewController.view];',但4.0之后应该使用'self.window.rootViewController = self.viewController;'。现在,当我从主菜单切换到我的摄像头页面(通过presentModalViewController调用摄像头)时,我应该使用'[self.view addSubview:mycamerapage_iPad.view];'?我认为这是我卡住的地方。你碰巧知道关于rootViewController的任何示例或教程?我只是在xcode4 – user744349 2011-05-14 16:33:37

相关问题