1

请通读我所有的问题,看看它是否与这个问题重复

有时我认为 iOS 是最好的操作系统,xCode 也是最优雅的 IDE,但有时我认为它们都是世界上最愚蠢的东西,也许是整个宇宙!

我需要的东西看起来很简单,像这样的代码逻辑

//code BEFORE asking user's decision
//with a lot of variables, this is important

//call UIAlertView to ask user Yes/No question, now the thread should be paused and waiting for user's tap on button

//code AFTER get user tap a button, selected YES/NO
//MANY variables before asking should be continuely used here
answerIsYES = //response from UIAlertView
if (answerIsYES)
{
     //code response to YES
}else{
     //code response to NO
}

如果您在 UIAlertView 显示前后注意到“许多变量”,您不会建议我使用 UIAlertViewDelegate。如果是这样,我必须在类级别制作所有变量,如果我必须在 FOR 循环中询问用户的决定怎么办?那不能跳转到 SelectedButtonAtIndex 方法并回来!我对吗?我想让我的代码集成,但 UIAlertView 及其委托似乎一直在拆分它们。

简单来说,我想要的只是一个来自.NET 的MessageBox,它可以等待用户的点击。那么是否有任何代码可以在 iOS 上实现这一点?iOS中是否有代码可以简单地“暂停”一个线程,然后由某个事件触发并“恢复”它?

我搜索了很多,找不到满意的答案,答案涉及“NSCondition”、“NSThread”、“loop”,但没有一个真的很好用。但我一开始确实在链接中找到了一个,由@Joseph Gagliardo 回复,我不知道这是否是最好的解决方案。

任何建议将不胜感激。

4

1 回答 1

2

UIAlertView与 UIKit 的大多数其他方面一样,是事件驱动的。您不希望在显示警报时阻塞主线程。很多时候,其他事情需要在警报出现时继续进行。但是你的问题有一个很好的解决方案。块。

最近添加的 UIKit 类开始使用块。这使得编写事件驱动代码更容易。它不需要单独的委托方法来处理某些事件的完成。

对“UIAlertView 块”进行 Google 搜索。您会发现几个UIAlertView使用块的第 3 方版本。使用这种类型的警报视图将允许您将所有代码保存在一个方法中。这些解决方案不会暂停主线程或任何东西。它只是让完成块更容易访问您在显示警报视图之前设置的所有变量。

于 2013-05-23T02:53:52.007 回答