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

尝试在视图不在窗口层次结构中的UITabBarController上显示UIAlertController

UITabBarController是iOS开发中常用的控制器之一,用于实现底部标签栏导航。而UIAlertController是iOS开发中用于显示弹窗的控制器。在一般情况下,UIAlertController是通过present方法在当前视图控制器上显示的。

然而,如果我们想要在不在窗口层次结构中的UITabBarController上显示UIAlertController,可以通过以下步骤实现:

  1. 获取当前应用的主窗口(UIApplication.shared.keyWindow)。
  2. 从主窗口中获取UITabBarController的实例。
  3. 在UITabBarController的selectedViewController属性中获取当前选中的视图控制器。
  4. 在当前选中的视图控制器上使用present方法显示UIAlertController。

下面是一个示例代码:

代码语言:swift
复制
if let tabBarController = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
    if let selectedViewController = tabBarController.selectedViewController {
        let alertController = UIAlertController(title: "标题", message: "消息内容", preferredStyle: .alert)
        // 添加弹窗的动作按钮
        alertController.addAction(UIAlertAction(title: "确定", style: .default, handler: nil))
        
        selectedViewController.present(alertController, animated: true, completion: nil)
    }
}

在这个示例中,我们首先获取了应用的主窗口,然后通过rootViewController属性获取到UITabBarController的实例。接着,我们获取到当前选中的视图控制器,并在其上使用present方法显示了一个UIAlertController弹窗。

需要注意的是,这种做法可能会违反用户体验的一些设计原则,因为UIAlertController通常是在当前视图控制器上显示,而不是在UITabBarController上显示。因此,在实际开发中,建议根据具体需求和设计规范来选择合适的方式显示弹窗。

推荐的腾讯云相关产品和产品介绍链接地址:

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

相关·内容

iOS学习——获取当前最顶层ViewController

iOS开发过程,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层ViewController展示一个UIAlertController...,或者最顶层ViewControllerpresent另一个ViewController,或者进行其他操作。...寻找过程,要分别考虑当前ViewController是UITabBarController和UINavigationController情况,同时还要考虑到当前ViewController是否通过...[UIApplication sharedApplication].keyWindow.rootViewController获取到是项目的根视图,结合可能用到UITabBarController或者UINavigationController...作为导航结构,以及可能present出新VC,其实如果用storyboard方式写UI的话就很清晰,类似树结构,再利用递归找到当前视图

6.4K50

iOS14开发-UIViewController

介绍 UIViewController 可以理解为 App 界面,负责管理 UIView 显示内容和用户交互,主要有以下作用: 负责创建和管理 UIView。 响应用户与视图交互。...顺向传值只需要在目标控制器声明需要接收参数,然后源控制器中进行传值即可。 storyboard 方式。 代码方式。...被代理对象(需要传值 UIViewController) 声明协议,协议定义传值方法,方法参数个数与类型取决于需要传值个数和类型。 UIViewController 声明一个代理属性。...接收值 UIViewController 实现需要传值 UIViewController 闭包属性,闭包实现拿到传过来值进行使用。...UINavigationItem是 UIViewController 属性,用于配置当前 UIViewController 显示时UINavigationBar显示内容。

2.3K20

Ask Apple 2022 与 SwiftUI 有关问答(

场景内容视图定义了场景创建窗口视图内容,但场景本身定义了应用程序整体结构。SwiftUI 4.0 ,WindowGroup 获得了相当大更新,真正具备了开发 macOS 应用能力。...不过,传统 viewModel 意义,我不建议将视图结构本身 )作为视图模型。...onAppear、init、viewDidLoadQ:应用程序,我 UIHostingController 托管了 SwiftUI 视图,这些视图都处于一个 UITabBarController...A:如果你 iOS 使用 UITextField 遇到性能问题,你可以尝试避免每个视图都是 UITextField ,默认渲染为 Text ,当文本被点击时动态切换为 UITextField 。...跨视图层次共享Q:在数据来自 API 响应情况下,多个视图之间共享数据最佳方式是什么?

12.2K20

iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:mainController]; // 给窗口指定根视图控制器..._window.rootViewController = nav; // 让当前窗口成为主窗口显示 [_window makeKeyAndVisible];...UITabBarButtonUITabBar得位置是均分,UITabBar高度为49。 UITabBar结构⼤大致如下图所示: ?...Paste_Image.png 7.2.3 往UITabBarController添加子控制器 有两种方法UITabBarController添加子控制器 : [tb addChildViewController...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示顺序和添加顺序一致,和导航控制器不同,展现在眼前是导航控制器视图控制器也就是第一个添加到导航控制器视图

1.2K40

iOS小技能:适配安全区域距离(safeAreaInsets)

但是如果一个view没有视图层次结构或未在屏幕显示, 则safeAreaInsets为0; 1.1 问题 视图底部工具栏显示到安全区域之外 1.2 判断安全区域距离 #define isIphoneX...//1.tabBarController中使用(你继承自UITabBarControllerVC) CGFloat tabBarHeight = self.tabBar.frame.size.height...; NSLog(@"tabBar高度:%f",tabBarHeight); //2.非tabBarController中使用 UITabBarController *tabBarVC = [[UITabBarController...(weakSelf.view); } }]; 2.3 应用场景3: 适配上拉加载更多控件 问题:没有时候加载更多控件文案也显示出来了...offset(- 0); make.top.equalTo(weakSelf.view).offset(0); if(isHasSafeAreaInsets()){// 避免没有时候加载更多控件文案也显示出来了

3.5K30

iOS开发·UIWindow与视图层级调整技巧(makeKeyWindow,resignKeyWindow,makeKeyAndVisible,keyWindow,windowLevel,UIWind

例如,很多人习惯keyWindow添加一个自定义浮层视图,但是,当自己或者其它第三方框架曾经调高过其它自定义UIWindow属性windowLevel,或者有其它同级windowLevelUIWindow...如何查看AppUIWindow层级 一. 为App初始化一个默认UIWindow对象 AppDelegate.m需要初始化一个window属性,作为后面往App添加视图容器 1....真的显示最上层。...如果不想影响原来UIWindow,可以考虑新建一个UIWindow并覆盖原来UIWindow,并往新建UIWindow添加各种手势相关视图及控制器。...UIWindow,但实际操作是把自己视图添加到keyWindow

7.7K10

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

下面的代码片段展示了如何初始化和显示一个带有“取消”和“好”按钮对话框视图。...Observer,我们通过每个按钮动作handler代码块(还有其他任何可能释放视图控制器地方)添加合适代码来实现它。...iOS 8我们不再需要小心翼翼地计算出弹出框大小,UIAlertController将会根据设备大小自适应弹出框大小。并且iPhone或者紧缩宽度设备它将会返回nil值。...这个时候拉菜单是以一个固定在源按钮弹出框形式显示。         要注意UIAlertController使用弹出框时候自动移除了取消按钮。...假定我们正在监听UIApplicationDidEnterBackgroundNotification通知消息,我们可以observer释放任何显示出来视图控制器。

37230

iOS页面切换几种方式

从一个视图控制器切换到另一个视图控制器几种方式 模态(modal)画面显示方式 //显示模态画面 [self presentModalViewController: ... animated:...:BViewController,CViewController 点击按钮之后B与C视图之间切换–多用于一个页面中有时要显示或隐藏某个View [self.view insertSubview...: 加载新页面 atIndex: n ]; 3.UITabBarController实现并列画面跳转 //将5个ViewController实例放入TabBarviewControllers...; self.window.rootViewController = self.tabBarController; //将根控制器视图加到应用程序窗口 [self.window...addSubview: self.tabBarController.view]; 4.UINavigationController实现多层画面跳转,导航控制器,载入有层级关系界面 [self.navigationController

2.4K10

iOS开发常用之 HUD 弹窗

MMProgressHUD - 设置HUD出现和消失方式(包括上下,左右,淡入淡出,放大缩小等等),设置HUD内容(可以HUD中加入帧动画,动态图片等等),设置HUD出现时底部覆盖层颜色,等等...STModalDemo - 弹出视图(通知,提示,选择,窗口)。...ActionSheetPicker-3.0 - 该项目是此前热门项目ActionSheetPicker新版本,快速复制了iOS 8下拉UIPickerView / ActionSheet功能。...PCLBlurEffectAlert.swfit - 细节定制较丰富弹出警报窗口组件。...CustomPopOverView - 自定义弹出视图,内容支持传一组菜单标题,也支持自定义view,或者自定义viewController,支持任意按钮触发,会显示在按钮底部,也支持切换按钮对齐方式

4.2K20

iOS初步集成极光推送后你还要做这些事

你可以在这里写一个UIAlertController提示,也可以像我一样提示顶部,取决你们UI设计。...*)currentViewController{ //获得当前活动窗口视图 UIViewController* vc = [UIApplication sharedApplication...自定义消息,这个比较特殊,它必须是app正在前台时候才能收到消息,收到消息位置而且不在代理,而是一个通知。 ? 当注册极光后可以加入下面代码。注册一个通知。...通知一般不是广播式,有时候需要针对不同用户群体或者个体发送通知,例如优惠券等。极光提供了几种区分用户方法,Web我们可以看到 ?...在上面我们一直说都是控制台直接发送消息,然而实际我们推送都是后台开发人员以API形式对接极光服务器。

2.8K50

iPad Safari多窗口视图分析和实现思路

在手机上,由于屏幕空间有限,点击窗口管理按钮可以看到手机上采用了一种视图层叠效果,有点模拟从一个实体文件夹翻查文件感觉。...[iPhone Safari 窗口管理] 而在iPad ,同样按钮打开视图是一个大纲视图,所有的网页窗口平铺展示,就像桌面平台窗口管理 [iPad Safari 窗口管理] 我们再认真观察一下...另外我们可以看到缩略图顶部有一个标题栏和一个关闭按钮,双指缩放放大过程我们可以看到一个临界点,超过这个临界点时候标题栏会渐隐,露出原本页面截图顶部搜索栏和标签栏。...我们常用 UITabBarController、UINavigationController 都是这样容器控制器(还有一个 iPad 分屏展示会用到 UISplitViewController)...从 Safari 表现来看它极有可能也是采用截图方式,我们实测网页动态播放视频到了大纲视图并不会继续动态播放,此外 Safari 进程被杀后重启,大纲视图里仍有之前截图,可以推测是通过静态截图并落地方式实现

4K30

Swift开发:自定义标签栏UITabBarController (Swift项目开始第一步)

Swift学习过程,个人感觉虽说两种语言相似度很大,但是Swift依然代码风格上有着和OC很大差异。...总结了一些基本用法之后,我尝试使用Swift自定义UITabBarController和UITabbar,开启这Siwft项目的关键一步,首先展示一下效果图: ?...第二步:准备资源文件 1.Assets.xcassets存放标签栏按钮所需要图片资源 ?...屏幕快照 2017-07-15 下午1.52.29.png 2.创建标签配置Plist文件,并且Plist文件设置视图控制器类名、Title、标签栏图片等信息 ?...屏幕快照 2017-07-15 下午1.46.26.png 这里做下说明,之所以创建这个plist文件是因为之后创建视图控制器和标签按钮时会有很大便利性,而且也十分方便真实开发过程需求更改。

3.9K70

【IOS开发基础系列】Storyboard专题

因为所有的窗口设计一个故事板文件,你会更容易把握每次改动带给每个窗口变化。     2、故事板可以描述各个窗口之间转换。这种转换叫做 segue(连接)。...2 使用 2.1 结合xib使用     思路:         APP跳转流程故事板呈现,但是VC事件处理与详细视图设计放在xib文件。     ...以这种方式,你可以创建超过 5 个ViewController 给TabBarController,它将自动Tabbar 显示 More... 按钮。...文档树这些关系显示如图中所示:         注意 TableViewController 被加入了一个navigationBar。...以前,如果你要定制表视图单元格,你要么代码向cell对象添加自己 subviews ,要么新建一个 nib 然后从nib 中加载你自己 cell。

81330

VCTransitionsLibrary –自定义iOS交互式转场动画

交互控制器 – 这个类是用来管理交互-那些通常由某个手势空控制交互,允许用户通过滑动,轻扫或执行其他操作来实现两个视图控制器导航.必须指出是,交互控制器允许导航取消,例如,一个用户可以正在导航至某一页面时...使用动画控制器 AnimationControllers 文件夹中提供了许多可以整合进你工程动画控制器: 自定义模态控制器显示/隐藏动画 UIViewControllerTransitioningDelegate...协议被用来模态控制器显示/隐藏时提供一个动画控制器.当一个视图控制器被模态显示或隐藏时,它transitioningDelegate属性用来提供UIViewControllerTransitioningDelegate...为了给动画一个合适方向,你可以比较两个视图控制器索引: - (id )tabBarController:(UITabBarController...: // 实例变量,通常在你初始化方法初始化它们.

1.5K60

Android Studio 4.0+ 中新 UI 层次结构调试工具

和上一个版本不同是,新版本布局检查器可以以三维视角来展现视图层次结构,您可以直观地看到视图布局方式。...通过该工具您可以逐层来检查视图层次结构,同时它还会展示所有视图属性,包括继承自视图父类属性。 接下来我们一起了解一下最新版本布局检查器是如何发挥作用。...首先点击窗口 View 菜单,找到 Tool Window 子菜单,然后选择 Layout Inspector,这样就打开了布局检查器窗口。 布局检查器仅显示正在运行进程 UI 层次结构。...该版本布局检查器延续了之前版本功能并且更加多样化。首先,布局检查器可以用两种方式显示 UI 层次结构: 以二维轮廓格式,或者以一种称为旋转模式 (rotation mode) 三维视图形式。...请注意,旋转仅在 Android 10 或以上设备才可以使用。 您也可以选中一个视图,然后右键点击它后,窗口显示视图。 同样,您可以仅显示一个所选视图视图

2.3K20
领券