Ken*_*rty 0 modal-dialog objective-c wait uialertview objective-c-blocks
我在尝试让我的Objective-C代码在触发后续代码之前等待来自UIAlertView的用户输入时遇到了很多麻烦.例如,我有以下代码:
if (!self.currentUser) [self displayLoginUIAlertView];
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
Run Code Online (Sandbox Code Playgroud)
Program自定义对象在哪里以及用户输入的位置[self displayLoginUIAlertView]设置属性self.currentUser.
我宁愿不把第二行和第三行(Program *program和[program startProgram]成alertView:didDismissWithButtonIndex,因为我想限制我的视图控制器不同类型的警报意见的数量.另外,我不希望创建自己的自定义全模态UIAlertView中的对象(正如网上的一些解决方案似乎暗示的那样).
我希望得到的答案可以超越UIAlertView对象,并且有助于回答更常见的问题,即如何在进入下一行代码之前等待Objective-C中的一行完全执行.我也尝试过以下方法:
if (!self.currentUser) [self displayLoginUIAlertView];
while (!self.currentUser) wait(1);
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
Run Code Online (Sandbox Code Playgroud)
然而,这(不出所料)导致无限循环,其中警报视图从不出现并且用户输入被锁定.
我已经研究过使用块但是他们的语法非常困惑.块是解决方案吗?或者我问错了问题?
正确的方法确实是alertView:didDismissWithButtonIndex:在al.
但是,您可能想要创建一个可以接受回调块并充当您的委托的对象UIAlertView,但我认为它比它的值更麻烦..(您必须将您的委托对象保留在实例变量引用中防止它被解雇)