Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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
iPhone:在模式窗口关闭之前停止执行(打开方法)?_Iphone_Objective C_Modal Dialog - Fatal编程技术网

iPhone:在模式窗口关闭之前停止执行(打开方法)?

iPhone:在模式窗口关闭之前停止执行(打开方法)?,iphone,objective-c,modal-dialog,Iphone,Objective C,Modal Dialog,我向用户展示了一个UIView,其中包含一个UIPickerView,可以在不同的值之间进行选择。显示此视图时,它是异步显示的,并且在从UIPickerView获取任何有意义的数据之前,打开UIView的我的方法已经结束 是否有一种方法可以在停止执行打开方法的同时以模态的方式呈现这些控件,以便我可以在选择它们之后测试结果 我尝试在UIView和UIAlertView中显示UIPickerView,两者都是相同的,我的方法在使用控件之前返回 我试过: [self presentModalViewC

我向用户展示了一个UIView,其中包含一个UIPickerView,可以在不同的值之间进行选择。显示此视图时,它是异步显示的,并且在从UIPickerView获取任何有意义的数据之前,打开UIView的我的方法已经结束

是否有一种方法可以在停止执行打开方法的同时以模态的方式呈现这些控件,以便我可以在选择它们之后测试结果

我尝试在UIView和UIAlertView中显示UIPickerView,两者都是相同的,我的方法在使用控件之前返回

我试过:

[self presentModalViewController:self.Picker animated:YES];

而且仍然没有乐趣。

你肯定不想要-presentModalViewController:Animated:。该方法旨在显示UIViewController,而您的选择器是常规的ol'UIView。至于你的具体问题,快速回答是“不”

你在这里的目的需要一个稍微不同的设计理念。您需要两种方法,而不是一种方法同时显示选择器并从中获取所需的输入:一种方法显示选择器(可能使用UIView的动画方法),另一种方法根据其输入进行操作

具体地说,通过将自己设置为UIImagePicker的代理,您可以展示它,并确保稍后在将来的某个未定义的时间,picker会告诉您(通过pickerView:didSelectRow:Incomonent:delegate方法)它已经选择了一个项。此时,您可以测试选定的值并相应地采取行动。有关委派方法的详细信息,请参阅

在UI线程中停止执行只会阻塞并锁定UI。这不是执行事件驱动代码的正确方法

您需要将代码分成两个方法,而不是停止/阻塞并等待结果。第一个是调出选择器,然后立即返回,第二个是在停止/暂停代码后,在方法中执行您最初想要执行的任何操作。当第二个方法具有您需要的结果时,让选择器调用它