ios实战-runloop实现的同步弹窗

简介: 我们知道UIAlertView使用delegate返回数据实现的,使用麻烦,之前介绍过用Block实现的例子《ios实战-使用Block的UIAlertView》今天介绍使用runloop实现,用return返回点击的结果的方式

我们知道UIAlertView使用delegate返回数据实现的,使用麻烦,之前介绍过用Block实现的例子《ios实战-使用Block的UIAlertView》

今天介绍使用runloop实现,用return返回点击的结果的方式,首先看一下自定义弹窗的实现代码:

KSPopupView *popup = [[KSPopupView alloc] init];
NSIntegerbuttonIndex = [popup doModal];
NSLog(@"选择了%ld", (long)buttonIndex);
@implementationKSPopupView{BOOL_bModel;NSInteger_selectBtnIndex;
}
- (NSInteger)doModal {
[selfperformSelector:@selector(showAlert)];
_bModel =YES;while(_bModel) {
[[NSRunLoopmainRunLoop] runMode:NSDefaultRunLoopModebeforeDate:[NSDatedistantFuture]];
}return_selectBtnIndex;
}
- (void)showAlert {UIView*view = [[UIViewalloc] initWithFrame:CGRectMake(20,100,200,100)];
[view setBackgroundColor:[UIColorredColor]];UIButton*button = [[UIButtonalloc] initWithFrame:CGRectMake(0,0,50,30)];
[button setTitle:@"ok"forState:UIControlStateNormal];
[button setBackgroundColor:[UIColorgreenColor]];
[button addTarget:selfaction:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:button];
[[UIApplicationsharedApplication].keyWindow addSubview:view];
}
- (void)buttonClick:(UIButton*)button {
[button.superview removeFromSuperview];
_selectBtnIndex =1;
_bModel =NO;
}

ok,没有问题,假如你想使用系统自带的UIAlertView的话,也是一样的,只是不要在程序刚启动的时候调用,不然会无法弹出(原因暂时还不知道),下面是UIAlertView的例子:

- (NSInteger)doModal {
[selfshowAlert];
_bModel =YES;while(_bModel) {
[[NSRunLoopmainRunLoop] runMode:NSDefaultRunLoopModebeforeDate:[NSDatedistantFuture]];
}return_selectBtnIndex;
}
- (void)showAlert {UIAlertView*alertView = [[UIAlertViewalloc] initWithTitle:@""message:@"okookoko"delegate:selfcancelButtonTitle:@"cancel"otherButtonTitles:@"ok",nil];
[alertView show];
}
- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
_selectBtnIndex = buttonIndex;
_bModel =NO;
}


目录
相关文章
|
2月前
|
监控 算法 iOS开发
深入探索iOS函数调用栈:符号化与性能调优实战
在iOS开发中,理解函数调用栈对于性能调优和问题排查至关重要。函数调用栈记录了程序执行过程中的函数调用顺序,通过分析调用栈,我们可以识别性能瓶颈和潜在的代码问题。本文将分享iOS函数调用栈的基本概念、符号化过程以及如何利用调用栈进行性能调优。
45 2
|
5月前
|
JSON 搜索推荐 定位技术
打造个性化天气应用:iOS开发实战
【8月更文挑战第31天】在这篇文章中,我们将一起探索如何从零开始构建一个iOS天气应用。通过简单易懂的步骤,你将学习到如何使用Swift编程语言和苹果的开发工具Xcode来实现这个目标。我们会涉及到用户界面设计、网络编程以及数据解析等关键技能,确保你能够顺利地完成这个项目。无论你是初学者还是有一定经验的开发者,这篇文章都会带给你新的启发和收获。
|
8月前
|
iOS开发
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
885 0
|
8月前
|
iOS开发
多线程和异步编程:解释 iOS 中的同步和异步任务的概念。
多线程和异步编程:解释 iOS 中的同步和异步任务的概念。
152 1
|
iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(3)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
169 0
|
前端开发 数据处理 iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(2)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
99 0
|
iOS开发 Kotlin 容器
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(1)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
137 0