我在这方面奋斗了2天,并且相信这是我应该寻求帮助的那一刻。在我搜索SOF一段时间后,没有任何答案可以解决我的问题。这是我的申请......
在应用程序中,
这是问题
以下是我试过的内容
这是我正在使用的当前代码
// PopoverViewController, presented by a tab in TabBarController
- (IBAction)takePhoto:(id)sender {
[self.delegate takePhotoWithDeviceCamera];
}
// A Tab in TabBarController, delegate of popoverViewController
- (void)takePhotoWithCamera {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
if ([UIDevice OSVersion] < 6.0) {
[self presentModalViewController:cameraPicker animated:YES];
} else {
[self presentViewController:cameraPicker animated:YES completion:nil];
}
}
知道什么会导致此错误吗?欢迎任何建议。谢谢。
答案 0 :(得分:8)
遇到了与你相同的麻烦,最终得到了基于@ CainaSouza的答案的解决方案。我一直在使用Xamarin.iOS,所以我将在C#中回答,但它可以很容易地转换为Objective-C。
我使用与@CainaSouza相同的代码来呼叫控制器:
Advanced
然后我将以下代码添加到我的自定义<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:FIXML="fixprotocol.org/FIXML-4-4"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="FIXML msxsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:apply-templates select="@* | node()"/>
</xsl:template>
<xsl:variable name="checkData">
<data>Hdr</data>
<data>Insert1</data>
<data>Insert2</data>
</xsl:variable>
<xsl:template match="FIXML:Main">
<Main>
<xsl:variable name="temp" select="//*"/>
<xsl:for-each select="msxsl:node-set($checkData)/*">
<xsl:choose>
<xsl:when test="count($temp[local-name(.)=current()]) >= 1">
<xsl:copy-of select="$temp[local-name(.)=current()]"/>
</xsl:when>
<xsl:otherwise>
<xsl:element name="{current()}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</Main>
</xsl:template>
:
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController (customController, true, null);
诀窍是检查你之前是否还没有出现过UIViewController。
我知道这是一个老问题,但希望它会帮助某人。 :)
答案 1 :(得分:4)
在popoverController中呈现imagePicker控制器(如果是iPad)。这不会给你这个错误。
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[popover presentPopoverFromRect:self.selectedImageView.bounds inView:self.selectedImageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popOver = popover;
}
else {
[self presentModalViewController:picker animated:YES];
}
最诚挚的问候。
答案 2 :(得分:2)
你试过这样呈现吗?
[self.view.window.rootViewController presentModalViewController:cameraPicker animated:YES];
答案 3 :(得分:1)
我的猜测是没有正确分配/释放cameraPicker实例。尝试在 - (void)takePhotoWithCamera方法中创建cameraPicker,而不是依赖于先前创建的实例。您将获得回调方法中的选择器实例的句柄...
答案 4 :(得分:0)
我遇到了同样的问题 - 我希望用户使用全屏视图拍摄照片(即调用presentViewController并传递UIImagePickerController控制器实例)并从弹出框中选择现有照片(我使用initWithContentViewController将其与弹出框关联)。我重复使用UIImagePickerController的相同实例用于相机和弹出窗口,如果我在打开弹出框之前尝试运行相机,它会抛出相同的异常。
我原来导致了一个问题,我的解决方案只是有两个UIImagePickerController实例 - 一个用于摄像头(我从主视图中呈现)和另一个用于弹出窗口。它到目前为止工作。 :-)
不确定它是否仍然适用于原始海报,但希望它能帮助其他遇到此讨论的人。