转自: http://www.cocoachina.com/bbs/read.php?tid-60136.html
建议去上面的网页浏览,转载时,csdn不支持图片
带返回值的模态窗口UIAlertView
在使用C#、VC编程中总是会使用到模态窗口,它的简单使用方法如下
某个函数内
ret = theForm.showDialog(); // 阻塞在此,直到退出窗体,尤其是那些有“取消”、“确定”等的窗体
switch (ret)
{
// 根据返回结果继续下一步动作
}
虽然使用UIAlertView也可以解决问题,但是其编程方法太麻烦,因此对其进行了一个封装。
定义头文件
某个函数内
ret = theForm.showDialog(); // 阻塞在此,直到退出窗体,尤其是那些有“取消”、“确定”等的窗体
switch (ret)
{
// 根据返回结果继续下一步动作
}
虽然使用UIAlertView也可以解决问题,但是其编程方法太麻烦,因此对其进行了一个封装。
定义头文件
|
定义实现文件
|
测试用例
1.单击按钮,弹出AlertView
2.等待AlertView返回
3.AlertView返回之后,打印用户选择结果
|
原理
使用 NSRunLoop,在等待用户结果返回之前,在自己的进程内像UIApplicationMain一样处理事件,使得自己阻塞,而其他的事件处理不阻塞。
做法:在有退出条件的循环内调用 [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
可以使用类似的方法做自定义的带返回结果的模态窗体了
不足
由于不知道UIAlertView有没有实现支持 va_arg,目前的这个AlertView只能支持2个按钮