Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 情节提要UIImagePicker覆盖UIButton不会取消预览_Xcode_Storyboard_Uiimagepickercontroller - Fatal编程技术网

Xcode 情节提要UIImagePicker覆盖UIButton不会取消预览

Xcode 情节提要UIImagePicker覆盖UIButton不会取消预览,xcode,storyboard,uiimagepickercontroller,Xcode,Storyboard,Uiimagepickercontroller,更新2 viewdide执行两次,一次在触摸覆盖按钮之前,一次在触摸覆盖按钮之后。修复方法是将条件添加到viewDidAppear,它将控制权返回给调用类吗?如果是这样的话,我将不胜感激。或者,viewdide出现execute两次这一事实暗示了另一种修复方法 更新2 更新1 问题可能是我使用了下面显示的viewdide和viewdideload。有人能帮忙吗 - (void)viewDidAppear:(BOOL)animated { self.overlayViewControll

更新2

viewdide
执行两次,一次在触摸覆盖按钮之前,一次在触摸覆盖按钮之后。修复方法是将条件添加到
viewDidAppear
,它将控制权返回给调用类吗?如果是这样的话,我将不胜感激。或者,
viewdide出现
execute两次这一事实暗示了另一种修复方法

更新2

更新1

问题可能是我使用了下面显示的
viewdide
viewdideload
。有人能帮忙吗

- (void)viewDidAppear:(BOOL)animated
{

    self.overlayViewController = [[BSsetupOverlayViewController alloc] initWithNibName:@"BSsetupOverlayViewController" bundle:nil] ;

    // as a delegate we will be notified when pictures are taken and when to dismiss the image picker
    self.overlayViewController.delegate = self;


    [self showImagePicker:UIImagePickerControllerSourceTypeCamera];

}


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}
更新1

更新0

也许我不清楚不起作用的版本和起作用的版本之间的区别是,故事板在不起作用的版本中使用。为什么一个
done
按钮在没有故事板的情况下可以工作,而在没有故事板的情况下却不能工作,即使覆盖层只涉及一个笔尖

更新0

可以取消相机预览,但在我的实际应用程序中,点击ui按钮只能暂时取消预览和覆盖屏幕。预览立即返回。我认为问题在于我实现UIImagePicker委托的方式,但我可能错了

它包含一个具有不良行为的示例项目。

并建议使用条件子句可能会解决此问题,正如我在问题的更新2中所述。Meetup的创始人库尔特·尼米(Kurt Niemi)通过编辑
BSsetupViewController
类,很快展示了如何做到这一点

首先,他向接口添加了一个布尔属性

@property (nonatomic, assign) BOOL alreadyDisplayed;
其次,他在
viewdideappear
方法中添加了一个子句

if (self.alreadyDisplayed)
{
    self.alreadyDisplayed = FALSE;
    [self dismissViewControllerAnimated:NO completion:nil];
    return;

}

self.alreadyDisplayed = TRUE;
self.alreadyDisplayed = FALSE;
最后,他在
viewDidLoad
方法中添加了一个稍微不必要的子句

if (self.alreadyDisplayed)
{
    self.alreadyDisplayed = FALSE;
    [self dismissViewControllerAnimated:NO completion:nil];
    return;

}

self.alreadyDisplayed = TRUE;
self.alreadyDisplayed = FALSE;
我仍然希望这些步骤是不必要的,但它们似乎有效