首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS Objective-C获取当前显示的UIAlertController上的引用

在iOS Objective-C中,要获取当前显示的UIAlertController上的引用,可以通过以下步骤实现:

  1. 首先,需要获取当前显示的视图控制器。可以使用UIApplication的keyWindow属性来获取应用程序的主窗口,然后使用rootViewController属性获取根视图控制器。
代码语言:txt
复制
UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
  1. 接下来,需要遍历视图控制器层次结构,找到当前显示的UIAlertController。可以使用递归方法来遍历每个视图控制器的子视图控制器。
代码语言:txt
复制
UIViewController *currentViewController = [self getCurrentViewControllerFrom:rootViewController];
代码语言:txt
复制
- (UIViewController *)getCurrentViewControllerFrom:(UIViewController *)viewController {
    if ([viewController isKindOfClass:[UIAlertController class]]) {
        return viewController;
    }
    
    if ([viewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController *navigationController = (UINavigationController *)viewController;
        return [self getCurrentViewControllerFrom:navigationController.visibleViewController];
    }
    
    if (viewController.presentedViewController) {
        return [self getCurrentViewControllerFrom:viewController.presentedViewController];
    }
    
    for (UIViewController *childViewController in viewController.childViewControllers) {
        UIViewController *currentViewController = [self getCurrentViewControllerFrom:childViewController];
        if (currentViewController) {
            return currentViewController;
        }
    }
    
    return nil;
}
  1. 最后,可以通过判断获取到的当前视图控制器是否为UIAlertController来确定是否成功获取到了当前显示的UIAlertController。
代码语言:txt
复制
if ([currentViewController isKindOfClass:[UIAlertController class]]) {
    UIAlertController *alertController = (UIAlertController *)currentViewController;
    // 在这里可以使用alertController进行进一步操作
} else {
    // 当前没有显示的UIAlertController
}

这样,就可以通过以上步骤获取到当前显示的UIAlertController的引用了。

对于iOS开发中的UIAlertController,它是一种用于显示警告、提示或确认消息的视图控制器。它可以包含一个或多个按钮和一个可选的文本输入框。UIAlertController可以用于各种场景,例如显示错误消息、确认用户操作、输入用户信息等。

腾讯云提供了丰富的云计算产品和服务,其中与iOS开发相关的产品包括云服务器、移动推送、移动直播、移动分析等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • IOS开发基础系列】UIAlertController专题

    重要参考链接: iOS 8中使用UIAlertController http://www.cocoachina.com/ios/20141126/10320.html         iOS 8新特性之一就是让接口更有适应性...要说明一点,苹果官方现在并不提倡在iOS 8中使用UIAlertView,取而代之UIAlertController。下面我们就来介绍UIAlertController使用方法。...默认样式         按钮显示次序取决于它们添加到对话框控制器次序。...其他按钮将会按照添加次序从上往下依次显示。《iOS 用户界面指南》要求所有的“毁坏”样式按钮都必须排名第一(红榜嘛,很好理解,对不对?)。         ...这个时候拉菜单是以一个固定在源按钮弹出框形式显示。         要注意UIAlertController在使用弹出框时候自动移除了取消按钮。

    50130

    iOS 获取当前时间及时间戳互换

    在项目开发中,难免会遇到使用当前时间,比如实现网络请求上传报文、预约、日历等功能。 1....获取年月日时分秒 实现代码: NSDate *date1 = [NSDate date]; NSDateFormatter *formatter1 = [[NSDateFormatter alloc]...,代码中("YYYY-MM-dd HH:mm:ss")这个时间样式是可以根据我们需求进行修改,比如: 20170901112253 ==> ("YYYYMMddHHmmss") 如果只想获取年月,...区分系统时间是24小时制还是12小时制 代码如下: //获取系统是24小时制或者12小时制 NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate...字符串转时间戳 代码如下: //字符串转时间戳 //datenow为当前时间 NSString *timeSp = [NSString stringWithFormat:@"%d", (long)[datenow

    2.6K30

    iOS获取当前 NSViewController window 以及其所在 NSWindowController window

    # 前言 场景:登录成功后,我们需要关闭当前登录页 NSViewController 以及 NSWindowController ,这时就需要获得当前 window 进行关闭 # 解决 这里分别针对...NSView 后面就能猜到了 self.window 通过阅读官方文档我们发现,NSView 本身就是持有 window ,所以这个很简单 # NSViewController NSViewController...NSWindowController NSWindowController 本身也持有,所以也很简单啦 self.window 这里要注意:由于 window 是在 NSWindowController ,...而 NSView 和 NSVC 又都是在 NSWindow 所以这三个获得 NSWindow 是同一个 NSWIndow # 最后 新制作了期视频 【漫画编程】27 岁没文凭能不能转行程序员?

    1.3K10

    使用 Unity 来实现 iOS 原生弹框

    目标 本文主要目标是帮助你使用 Unity 创建 iOS 原生弹框。 你会得到最终效果如下图 ? ? ? ? 你想要遵循 iOS 标准来显示弹框吗?...我命名为 PopupView.cs ,现在让我们在代码中添加一个按钮点击监听事件。 为每一个按钮创建一个方法并且在按钮点击事件添加引用。从 iOS 对话行为中返回一个枚举存储消息状态。...代码相互作用 现在,创建一个脚本命名为 IOSNative.cs 来直接和 iOS 代码(Objective-c)进行交互。...只要你下载完了工程,你就可以拷贝所有的 iOS 文件到你 unity 工程 Plugins 文件夹中 回到 xcode,创建新 Objective-C 文件命名为 DataConvertor 来转换数据...只要你下载完了工程,你就可以拷贝所有的 Objective-C 文件到你 unity 工程 Plugins/iOS 文件夹中 我希望这篇博客对你是有帮助

    2K30

    iOS学习——UIAlertController详解

    UIAlertController是在iOS8.0中出现一种统一提示风格界面,代替原来UIAlertView和UIActionSheet两种类别。...UIAlertController提示器使用分为三步,创建UIAlertController提示器对象-->配置UIAlertController提示器按钮-->显示UIAlertController...1.2.1 UIAlertController添加按钮    UIAlertController每一个按钮都是一个UIAlertAction,与UIAlertController类型是UIAlertView...,用于获取UIAlertController提示器所有的文本框对象,这个经常在我们点击按钮时用这个来获取到每一个文本框,并取得用户填写信息。...提示器显示   UIAlertController提示器显示则很简单,从提示器类名UIAlertController可以看出,提示器是一个viewController,因此,要显示提示器,我们一般是是当前

    2.9K170

    Android编程实现悬浮窗获取显示当前内存使用量方法

    本文实例讲述了Android编程实现悬浮窗获取显示当前内存使用量方法。分享给大家供大家参考,具体如下: 运行效果: ? 其中: ? 这一块就是悬浮窗,可以随意拖动,动态显示当前内存使用量。...view.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // 获取相对屏幕坐标...其实我们Activity或者Diolog底层实现也是通过WindowManager,这个 WindowManager是全局,整个系统就是这个唯一东东。它是显示View最底层了。...另:在设置View高度和宽度时候一 个错误,即在View构造函数中获取getWidth()和getHeight(),当一个view对象创建时,android并不知道其大小,所以 getWidth()...这样就实现了拖动功能。其内存数据是如何获取及及时更新呢?

    1.5K21

    获取屏幕正在显示activity 博客分类: Android小技巧

    用过ActivityManager童鞋估计都知道,可以从ActivityManager里面可以获取当前运行所有任务,所有进程和所有服务,这是任务管理器核心。...仔细看getRunningTasks文档,里面说获取是系统中"running"所有task,"running"状态包括已经被系统冻结task。...而且返回这个列表是按照顺序排列,也就是说第一个肯定比第二个后运行。 getRunningTasks有个整型参数,表示返回列表最大个数。...那么,我们如果把1作为参数给进去,那么他返回task就是当前运行那个task,然后从task中获取到最顶层activity,这个activity就是当前显示给用户那个activity了。...("", "pkg:"+cn.getPackageName()); Log.d("", "cls:"+cn.getClassName());           至于这个能做什么,嘿嘿,我相信你知道

    2.8K30

    百度地图---获取当前位置返回是汉字显示而不是经纬度

    这是当前项目的第二个需求,返回当前位置  这个需求在百度地图里面实现很简单,但是出了一大堆乱起八糟错误,错误等到后面的文章再说,先说要获取当前位置怎么做 原理很简单: 第一个需要是的通过  GPS...BDLocationListener  我们需要去实现他就可以了 3.结果反编译  因为返回结果是经纬度 百度里面是  GeoCoder   只需要用到这三个东西就可以实现获取当前位置,首先我们看看怎么使用百度提供...,当前你也可以用String 来存储了 onCreate()里面加上这些代码:         mLocationClient = new LocationClient(this.getApplicationContext...BDLocation.TypeCriteriaException) {                 sb.append("\ndescribe : ");                 sb.append("无法获取有效定位依据导致定位失败...           // mLocationClient.setEnableGpsRealTimeTransfer(true);         }     }     /**      * 显示请求字符串

    2.3K40

    JSBridge 原理

    注入 API 基于 Webview 提供能力,我们可以向 Window 注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...= nil) // javaScriptString 需要调用 JS 代码 // completionHandler 执行后回调 // objective-c [jsContext evaluateJavaScript...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 在我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用。...但是如果后期 Bridge 实现方式改变,双方需要做更多兼容,维护成本高 由 Native 注入 这是当前我司移动端选用方式。...在考虑到后期业务需要情况下,进行了重新设计,选用 Native 注入方式来引用 JSBridge。

    2.2K40

    小白必看,JSBridge 初探

    注入 API 基于 Webview 提供能力,我们可以向 Window 注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...= nil) // javaScriptString 需要调用 JS 代码 // completionHandler 执行后回调 // objective-c [jsContext evaluateJavaScript...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 在我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用。...但是如果后期 Bridge 实现方式改变,双方需要做更多兼容,维护成本高 由 Native 注入 这是当前我司移动端选用方式。...在考虑到后期业务需要情况下,进行了重新设计,选用 Native 注入方式来引用 JSBridge。

    1.5K10

    来了,iOSJSCore与H5交互

    我们先看一官方文档 那么这个context我们怎么获取到呢?...[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; 通过kvo我们可以从WebView中获取到,...那么有了桥梁我们同样需要给WebView说一声让他知道native存在--- self.ctx[@"App"] = self; 这样相互直接就知道对方存,js通过App这个作为native引用,...但是有一个点需要注意,我们暴露出共js调用至少需要一个形参,也就是说,不传递数据也要有一个参数 ② 传递给WebView引用实现协议与函数 这里我们只看一个实现 -(void)popBack:(NSString...最后是一个兼容性彩蛋,也是最坑一点---alert UIAlert在iOS 9之后慢慢被禁用,而到了iOS13之后这问题异常严重,然鹅直接js进行alert居然报错,好在是哟办法 这里附上几种带和不带输入和提示框

    1.2K30

    iOS10.3后允许App运行中变更App图标

    引 在iOS10.3中,苹果提供了一个比较有意思功能。...不知道大家注意到没有,iPhone自带日历和始终App图标是实时显示当日日期和当时时间,时间秒钟还会走动,这其实就做到了在安装完App后,还能自由地变更App图标,而现在,我们普通开发者也可以实现了...API支持 首先这个功能只在iOS10.3以后才支持,所以在使用之前当然需要进行判断,我们当然也能够自己获取iOS系统版本来决定,但是苹果给我们提供了直接判断方法: // 如果为NO,表示当前进程不支持替换图标...,则代表当前使用是主图标....在按钮响应方法中,我们首先要判断当前系统支不支持换图标,不支持则直接返回。

    81820
    领券