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

在AppDelegate (vs viewDidLoad)的UI引导代码中选择根视图控制器

在AppDelegate的UI引导代码中选择根视图控制器是指在iOS应用程序的启动过程中,通过设置AppDelegate类中的window属性的rootViewController来指定应用程序的初始界面。

在iOS应用程序中,AppDelegate类是应用程序的代理类,负责处理应用程序的生命周期和事件响应。在应用程序启动时,AppDelegate类的application:didFinishLaunchingWithOptions:方法会被调用,我们可以在该方法中进行一些初始化操作,包括设置应用程序的根视图控制器。

选择根视图控制器的方式有多种,常见的方式包括使用故事板(Storyboard)或手动创建视图控制器。

  1. 使用故事板(Storyboard):
    • 在故事板中创建一个或多个视图控制器,并设置其中一个为初始视图控制器。
    • 在AppDelegate类的application:didFinishLaunchingWithOptions:方法中,使用UIStoryboard类的方法实例化故事板,并通过其instantiateInitialViewController方法获取初始视图控制器。
    • 将获取到的初始视图控制器设置为AppDelegate类的window属性的rootViewController。
  • 手动创建视图控制器:
    • 在AppDelegate类的application:didFinishLaunchingWithOptions:方法中,手动创建一个或多个视图控制器的实例。
    • 根据应用程序的需求,可以选择使用UINavigationController、UITabBarController等容器视图控制器来管理其他视图控制器。
    • 将创建的视图控制器或容器视图控制器设置为AppDelegate类的window属性的rootViewController。

选择根视图控制器的目的是为了确定应用程序启动后显示的第一个界面,可以根据应用程序的需求选择适合的方式进行设置。

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

  • 腾讯云移动应用分析(MTA):https://cloud.tencent.com/product/mta
  • 腾讯云移动推送(TPNS):https://cloud.tencent.com/product/tpns
  • 腾讯云移动直播(LVB):https://cloud.tencent.com/product/lvb
  • 腾讯云移动短信(SMS):https://cloud.tencent.com/product/sms
  • 腾讯云移动应用安全(MSA):https://cloud.tencent.com/product/msa
  • 腾讯云移动智能(MIP):https://cloud.tencent.com/product/mip
  • 腾讯云移动推广(ASO):https://cloud.tencent.com/product/aso
  • 腾讯云移动游戏加速(GME):https://cloud.tencent.com/product/gme
  • 腾讯云移动游戏联机对战引擎(GSE):https://cloud.tencent.com/product/gse
  • 腾讯云移动游戏解决方案:https://cloud.tencent.com/solution/mobile-gaming
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

, 一个应用只需创建一次 UIWindow 窗口; -- FKViewController 属性 : 代表视图控制器, 系统创建控制器时, 通常会加载对应 xib 文件; -- 应用初始界面 : ...UIViewController 控制器 UIController 方法详解 : 主要用于处理视图加载, 显示等事件; -- viewDidLoad 方法 : 视图装载完成后, 自动回调该方法, 重写时注意先使用...灰色箭头作用 :  -- 作用 : 箭头表示 UI 控制器之间切换关系, 箭头指向需要加载 视图控制器; -- 移动箭头 : 视图中只有一个 UI 控制器, 移动箭头始终指向唯一 一个 UI 控制器...-- 缩小 : 多个视图控制器同一个窗口, 缩小界面可以同时查看所有的 视图控制器; -- 恢复 : 恢复原样查看; -- 放大 : 放大界面设计文件; 3....option + 3 打开身份检查器, 由身份检查器上可以看到 其 Custom Class 属性为 UIView, 因此该界面的控件时 UIView; -- 创建自定义类 : 选择菜单 File

4.9K30

iOS:分割控制器UISplitViewcontroller

基本样式截图为: 故事板布局样式截图为: 下面我们就通过纯代码方式创建如下: 1、创建两个控制器类,一个为主控制器类MasterViewController,一个为详细控制器类DetailViewController...2、导入几张素材图片,用来详细控制器显示。...所有的文件截图为: 3、下面就是具体代码创建了: //AppDelegate.m文件: 导入头文件并声明必要属性,同时实现分割控制器协议 #import "AppDelegate.h" #import...Master导航栏和按钮,并设置表格视图数据源和代理 - (void)viewDidLoad { [super viewDidLoad]; //创建UITableView...文件 设置视图背景颜色 - (void)viewDidLoad { [super viewDidLoad]; //设置视图颜色为白色 [self.view setBackgroundColor

1.8K30

iOS导航栏使用总结

; 1.全局设置 全局设置一般都是AppDelegate设置,这样整个app都会生效,相关代码与效果图如下: //1.设置导航栏背景颜色 [[UINavigationBar appearance...导航栏视图层级图 从图中可以看出,导航栏底部分割线是一个UIImageView对象,而且高度只有0.5,所以我们可以据此获取到导航栏底部分割线对象,一个视图控制器实现此需求,代码如下: #import...UI布局进行优化:视图控制器里面第一个被添加进去视图是滑动类视图,并且其Frame是整个屏幕大小时,系统会自动调整其contenInset,以保证滑动视图内容不被UINavigationBar与UITabBar...我们可以通过一段代码来测试一下效果,默认导航栏(半透明)视图控制器里添加如下代码: //UITextView是滑动视图,内容自动向下偏移,不会被导航栏覆盖 UITextView *leftTextView...,默认值是UIRectEdgeAll,即:当前视图控制器里各种UI控件会忽略导航栏和标签存在,布局时若设置其原点设置为(0,0),视图会延伸显示到导航栏下面被覆盖。

3.2K20

iOS 超简单抽屉效果(MMDrawerController)实现

下面是用手势实现抽屉拉出和收回 1.初始化跟视图控制器时,AppDelegate中导入头文件 #import "MMDrawerController.h" 2.初始化方法先初始化左视图和中心视图...window视图控制器上,运行程序,就可以实现用手势来控制抽屉拉出和收回。...1.中心视图 控制器添加头文件 #import "UIViewController+MMDrawerController.h"//第三方封装头文件 #import "MMDrawerBarButtonItem.h..."//第三方封装头文件 #import "LeftDrawerTableViewController.h"、、左视图头文件 2.viewDidLoad实现添加左抽屉控制按钮方法 [self...setupLeftMenuButton];//viewDidLoad实现添加左抽屉 控制按钮方法 3.在下面实现添加按钮方法 -(void)setupLeftMenuButton {

1.4K20

iOS 启动页后广告Demo

2: APPDelegate   didFinishLaunchingWithOptions  中进行一个视图切换(同志们看了下面代码分析要觉得有问题,欢迎指正)。...advertisingview ; // advertisingview(); 你要调用就要传参数过去,调用具体代码 APPdelegate 里面调用时候添加这个 block具体代码、...alloc]init]; ZXTabBarController * tabbarcontroller = [[ZXTabBarController alloc]init]; // 这里要添加控制器...[adviewcontroller.adverView startplayAdvertisingView:^(AdvertisingView * adverview) { // 更换控制器...return YES; }  总结一下:        这样做,效果是实现了,但我心里一直疑问就是在上面的更换控制器这里,这样写效果是没问题,下面我也会把效果图给大家看一下,本来这里我感觉就是这整个效果一个核心地方

1.8K80

如何解决XcodeSIGABRT错误

这是发生了什么: 您在Interface Builder创建了一个新视图控制器,并使用一些UI元素(例如按钮和标签)对其进行了设置 您可以通过使用插座属性将这些UI元素连接至代码,这将在视图控制器属性与...Interface BuilderUI元素之间建立连接 有一次您更改了初始插座属性名称,并且您应用因SIGABRT错误而开始崩溃 当您使用Interface Builder创建视图控制器时,您应用程序运行时...(大致而言),您应用程序将使用XIB文件生成视图控制器UI。...iOS使用一种称为键值编码机制来检查视图控制器具有的属性,因此它可以使用这些属性来引用其基于XIB创建UI元素。 您现在如何解决该错误?...该违规代码第21行ViewController.swift,内部viewDidLoad()功能 你甚至可以看到,我们所使用标的“吸气”Array 崩溃之前,进行了大量与视图控制器相关函数调用

5.9K20

iOS四大对象之UIWindow及四大对象之间关系1. UIWindow使用纯代码加载控制器2. UIWindow创建过程3. 四大对象之间关系

UIWindow/使用纯代码加载控制器 UIWindow是一种特殊UIView,通常在一个app只会有一个UIWindow -iOS程序启动完毕后,创建第一个视图控件就是UIWindow,接着创建控制器...UIViewController *mainController = [[UIViewController alloc] init]; // 给窗口指定视图控制器 window.rootViewController...),自动把该控制器设置为UIWindow控制器 接下来再将window显示出来,即看到了运行后显示界面。...5.4.2 代码创建过程 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application 创建代理,并且把代理设置给application 开启一个事件循环...该方法,创建一个Window 然后创建一个控制器,并把该控制器设置为UIWindow控制器 接下来再将window显示出来,即看到了运行后显示界面。 3.

1.7K30

App生命周期

假设我们处理内存警告时释放view属性:self.view = nil。因此loadView方法视图控制器生命周期内可能被调用多次。...创建view过程,首先会根据nibName去找对应nib文件然后加载。...如果nibName为空或找不到对应nib文件,则会创建一个空视图(这种情况一般是纯代码) 注意:重写loadView方法时候,不要调用父类方法。...viewDidAppear view被添加到视图层级以及多视图,上下级视图切换时调用这个方法,在这里可以对正在显示视图做进一步设置。...viewDidDisappear view已经消失或被覆盖,此时已经调用removeFromSuperView; dealloc 视图被销毁,此次需要对你init和viewDidLoad创建对象进行释放

1.2K10

IOS开发之视图视图控制器

视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要东西。在学习视图这一块东西时候,感觉和Java SwingPanel差不多。...我们空工程文件结构如下,我们只需AppDelegate.m添加我们视图,还是那句话为了更好理解我们视图,所有视图创建和配置我们都用代码编写。 ?         ...往我们SuperView添加SubView坐标和index都是相对于我们视图来配置。我们为上面的视图添加一个subView,代码如下: ?         ...本文刚开始时候我们加入view代码都是AppDelegate.m文件里加,其实没没那么做,如果我们一直在上面的文件实例化我们各种控件,我们应用程序代码会非常难维护。...,AppDelegate.m实例化MainViewController并添加到window代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 - (BOOL)application

1.7K70

一步一步,开始上手Mac 开发(一)

可能你已经意识到了,iOS你熟知许多UIKit控件,就是脱生于Mac OSX AppKit,只是把原来Mac OSXNS前缀改为UI前缀而已,因此,多数情况下,你iOS中经常用控件基本上...将控制view 添加到主窗口容器视图(contentView)。 3. 设置控制器view大小与主窗口相等。...到此,与iOS开发比较,你会发现一些不同,iOS需要设置窗口控制器(rootViewController),但在OSX并不存在控制器,因此需要将view添加到窗口contentview。...1.12 点击运行,主窗口将会显示带有table View视图 ?...通常情况下,table view数据源和代理都是控制器),这一步可以通过代码设置,也可以xib图形界面设置: ?

4K40

iOSOC给Category添加属性

使用时候,只需要import你创建Category,使用时候还是使用原来类,但是你会惊奇发现他支持你自己Category添加方法。...工程按住command+N来添加新文件,选择Objectiv-C File: 在出来界面File Type选择Category,就是创建类别文件了,File填写我们要加在类别尾巴上名字,Class...浅析,这里只讲怎么用来添加属性,我们setter方法里关联一个对象,getter方法里获取对应key关联对象,就可以啦,代码如下,很简单: //UINavigationController+Cloudox.h...现在我们试试效果,我们按照平常方式用UINavigationController包装一个控制器作为视图: // AppDelegate - (BOOL)application:(UIApplication...alloc] initWithRootViewController:vc]; self.window.rootViewController = nav; return YES; } 这个视图控制器我们需要导入我们类别文件

1.2K10

iOS屏幕旋转及其基本适配方法

我们首先有个大致了解,控制屏幕旋转优先级为:工程Target属性配置(全局权限) = Appdelegate&&Window > 视图控制器> 普通视图控制器。...3.Appdelegate&&Window设置 正常情况下,我们App从Appdelegate启动,而Appdelegate所持有唯一Window对象是全局,所以Appdelegate文件设置屏幕旋转也是全局有效...但如果存在上层视图控制器,而我们只在这个视图控制器实现方法,会发现这个方法是不走,因为这个方法被上层视图控制器拦截了。理解这个原理后,我们有两种方法实现自动可控旋转设置。...方法2: 另辟蹊径,使用模态视图 使用模态视图可以不受这种视图控制器优先级限制。这个也很容易理解,模态弹出视图控制器是隔离出来,不受视图控制影响。...方法2:需要默认横屏界面里设置,进入时强制横屏,离开时强制竖屏 关于这种使用,这个具体可以参考第五节demo2 注:两种方法不可同时使用 八、关于旋转后适配问题 屏幕旋转实现会带来相应UI

9.1K60

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

Swift学习过程,个人感觉虽说两种语言相似度很大,但是Swift依然代码风格上有着和OC很大差异。...屏幕快照 2017-07-15 下午1.52.29.png 2.创建标签配置Plist文件,并且Plist文件设置视图控制器类名、Title、标签栏图片等信息 ?...第三步:创建视图控制器 自定义导航控制器视图控制器父类,并且创建三个继承于BaseViewController视图控制器(因为没有过多复杂操作,这里省略代码),为之后创建标签控制器做准备。...设置Window视图控制器为自定义标签控制器 func application(_ application: UIApplication, didFinishLaunchingWithOptions...项目前期我们以自定义方式来创建标签栏,这也是为了后期应对更加复杂需求做伏笔,比如增加新控制器我们只需要修改plist配置文件属性创建相应视图控制器就可以,这样就避免了修改大量代码

3.9K70

Swift 项目 - Xib | StoryBoard 多人协作技巧

StoryBoard 和 Xib 都是用来分离UI样式代码,改善视图代码重用率,增加所见即所得,降低视图测试繁复度视图系列化工具, 其中Xib以视图View为主, StoryBoard 以控制器Controller...Storyboard不利图片 一个Storyboard,大量Controller控制器和Segue连线彰显着错综复杂UI关系,使人望而生畏或者难以维护。...与其说StoryBoard 和 Xib 隐藏了UI细节,倒不如说苹果是希望通过他们来引导开发者正确使用 视图控制器 ,他们创建视图实例时候都是通过 required init?...一个占位容器视图指向子控制器Embed Segue 按住Control键连线到想要包含控制器,占位视图实例==子控制器view(子控制器视图选择Embed连线方式后,子控制器 尺寸变化成跟占位视图一样尺寸...viewDidLoad方法,self.parent 是nil,这时不能拿到主ViewController实例。

2K20
领券