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

目标c: iOS 13+以编程方式设置初始根视图控制器

答案:

目标c:iOS 13+以编程方式设置初始根视图控制器。

在iOS应用开发中,根视图控制器是应用程序的初始界面,它决定了应用程序启动后用户所看到的第一个界面。从iOS 13开始,我们可以使用编程方式设置初始根视图控制器,而不仅仅是通过故事板或XIB文件来设置。

要以编程方式设置初始根视图控制器,我们可以通过在SceneDelegate.m文件中的scene(_:willConnectTo:options:)方法中进行操作。具体步骤如下:

  1. SceneDelegate.m文件中,找到以下方法:
代码语言:txt
复制
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    // 该方法在应用程序启动时调用
}
  1. 在该方法内,我们可以使用UIWindowUIStoryboard来设置根视图控制器。以下是一个示例:
代码语言:txt
复制
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    UIWindow *window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *initialViewController = [mainStoryboard instantiateInitialViewController];
    window.rootViewController = initialViewController;
    self.window = window;
    [window makeKeyAndVisible];
}

在上面的示例中,我们首先创建了一个UIWindow对象,并使用UIWindowScene初始化它。然后,我们使用UIStoryboard从名为"Main"的故事板中实例化了初始视图控制器。最后,我们将初始视图控制器设置为根视图控制器,并使其窗口可见。

需要注意的是,以上示例假设故事板名称为"Main",如果你的故事板名称不同,请将代码相应地进行调整。

推荐的腾讯云相关产品:腾讯云移动应用云(Mobile Application Cloud,MAC)

腾讯云移动应用云(MAC)是腾讯云提供的一站式移动应用开发与运营平台,其中包含了丰富的移动应用开发工具和服务,帮助开发者快速构建高质量的移动应用。MAC提供了针对移动应用开发的云端编译、测试、分发、监控等一系列功能,支持iOS和Android平台的应用开发。

MAC的主要优势包括:

  1. 云端编译和测试:MAC提供了高性能的云端编译和测试环境,可以大大加快应用的开发和测试速度。
  2. 分发和管理:MAC支持应用的托管、分发和版本管理,方便开发者进行应用的发布和更新。
  3. 监控和统计:MAC提供了全面的应用监控和统计功能,帮助开发者了解应用的使用情况和用户行为,从而进行优化和改进。
  4. 全面的开发工具支持:MAC支持多种开发工具,包括Xcode、Android Studio等,方便开发者使用自己熟悉的工具进行开发。

MAC适用于各种类型的移动应用开发,无论是企业内部应用、社交媒体应用、电子商务应用还是游戏应用,都可以通过MAC来简化开发流程,提高开发效率。

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

相关·内容

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

控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B、C、D 控制器A被称为控制器B、C、D的“父控制器控制器B、C、D的被称为控制器A的“子控制器”...为了便于管理控制器iOS提供了2个比较特殊的控制器: UINavigationController UITabBarController 2....时, 可以通过initWithRootViewController:方法传入一个控制器作为控制器 这个控制器永远处于栈底(如果栈中只有一个对象,那么控制器也处于栈顶) 设置UIWindow的rootViewController...[[UINavigationController alloc] initWithRootViewController:mainController]; // 给窗口指定视图控制器...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是导航控制器视图控制器也就是第一个添加到导航控制器上的视图

1.3K40
  • UINavigationController

    的使用步骤 初始化UINavigationController 设置UIWindow的rootViewController为UINavigationController 根据具体情况,通过push方法添加对应个数的子控制器...UINavigationController栈的形式保存子控制器 使用push方法能将某个控制器压入栈 - (void)pushViewController:(UIViewController...,建议使用“自动型Segue” 手动型:需要通过写代码手动执行Segue,才能完成界面跳转 按住Control键,从来源控制器拖线到目标控制器 手动型的Segue需要设置一个标识 在恰当的时刻,使用perform...Segue对象的sourceViewController(来源控制器) 新建并且设置Segue对象的destinationViewController(目标控制器) 页面跳转前的操作 调用sourceViewController...,那就是Modal 任何控制器都能通过Modal的形式展示出来 Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止 //Modal的形式展示控制器 - (void

    1.4K60

    Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

    c++中没有对象和Qt QObject仅用于一些对象,Objective C有强制性的对象NSObject ....当然也能够定制getter / setter实现很多其它的内部逻辑,比如实现延迟初始化。 你能想象Objective C托付作为一组插槽。...NSUserDefaults是一个非常好的方式来存储和载入应用程序设置(与QSettings相类似)。 不幸的是Obj-c没有类似于于QtXmlPatterns的相关对象。...每一个视图控制器管理视图(还记得MVC吗?)。导航视图之间通过演变(UIStoryboardSegue)发生。 您能够通过源视图控制器的prepareForSegue方法在视图控制器之间移动数据。...在得到由OS特定事件发生时调用每一个视图控制器类似viewWillAppear等方法。

    94510

    SwiftUI 4.0 的全新导航系统

    SwiftUI 4.0( iOS 16+ 、macOS 13+ )对导航系统作出了重大改变,提供了视图堆栈为管理对象的新 API ,让开发者可以轻松实现编程式导航。本文将对新的导航系统作介绍。...使用新的编程式 API ,开发者可以轻松地实现例如:返回视图、在当前视图堆栈中添加任意视图视图跳转 )、视图外跳转( Deep Link )等功能。...基于类型的响应式目标视图处理机制 比如下面的代码是在老版本( 4.0 之前 )SwiftUI 中使用编程式跳转的一种方式: struct NavigationViewDemo: View { @...: 由于无需在 NavigationLink 中指定目标视图,因此无须创建多余的视图实例 对由同一类型的值驱动的目标进行统一管理( 可以将堆栈中所有视图的 NavigationLink 处理程序统一到视图中...例如视图,与第三层视图都通过 navigationDestination 定义了对 Int 的响应,那么第三层及其之上的视图将使用第三层的处理逻辑 可管理的视图堆栈系统 相较于基于类型的响应式目标视图处理机制

    10.3K62

    UIViewController生命周期

    一、视图控制器 UIViewController采用懒加载的方式,也就是说第一次访问到view属性时才会加载或创建它。...由于视图视图控制器管理,所以讨论视图的加载方式时,主要讨论视图控制器的加载方式。 通过Storyboard加载:这是苹果推荐的方式。...这需要我们在loadView 方法中,通过编程创建自己的视图层次,并且把把视图赋值给UIViewController的view属性。...我们可以重写这个方法,对通过nib文件加载的view做一些其他的初始化工作。比如可以移除一些视图,修改约束,加载数据等。...view添加到UIWindow中,并不理会它对应的控制器 [self.window addsubview:vc.view]; (2)设置uiwindow的控制器,自动将rootviewcontroller

    1.9K10

    iOS 系统中的视图动画

    哪些属性可以添加动画效果 根据 iOS 视图编程指南中说明, UIView 内置支持为下列属性添加动画效果: Frame 可以改变视图相对于上一级视图的位置和大小。...Alpha 改变视图的透明度。 BackgroundColor 修改视图的背景色。 ContentStretch 改变视图内容在视图的可用空间内的拉伸方式。...因为对于自动翻转的动画来说, 每次循环都是从原始值变化到目标值再变化回原始值, 如果希望动画结束之后停留在目标值, 需要将重复次数设置加上 0.5 , 否则, 动画回慢慢变回原始值, 再迅速变化到目标值...创建视图切换动画 视图切换动画可以减少修改可视化树时引起的界面上的突变, iOS 系统中大量使用了视图切换动画, 视图切换动画主要有下面两种场景: 修改子视图 替换子视图 注意: 不要把视图切换和视图控制器的切换混淆...(显示一个模式对话框、将视图控制器推入导航堆栈等), 视图切换改变的仅仅是视图的可视化树, 视图控制器是不变的, 更多信息可以参考iOS视图控制器编程指南。

    2.2K30

    iOS开发系列——纯代码实现iOS开发

    这里采用Xcode5.1),此时会发现已经没有ViewController和storyboard文件,我们需要手动创建一个视图控制器(在项目中右键选择Objective-c class,默认继承自UIViewController...相同,位置为(0,0) mainController.view.frame=self.window.bounds; //设置控制器为window的控制器 self.window.rootViewController...,这个控制器距离UIWindow是最近的;设置一个控制器控制器和直接通过addSubView添加控制器视图(view属性)到window并不完全一样(例如如果仅仅添加控制器视图那么应用虽然可以显示但是不支持旋转...UIWindow对象,同时把我们的视图控制器KCMainController设置为UIWindow的视图控制器,然后设置这个UIWindow为主窗口并可见。...当主窗口设置为可见过程中会调用视图控制器的loadView方法来加载视图(注意视图控制器的loadView方法是延迟加载的,第一次调用视图控制器的view属性才会调用此方法;由于makeKeyAndVisible

    3.5K60

    iOS的MVC框架之控制层的构建(下)

    因此您应该在这里完成一些业务逻辑初始化的动作、业务模型服务接口的初始请求、一些控件的事件处理绑定的动作、视图的delegate以及dataSource的设置。...简化控制器中的视图构建 视图的构建有两种方式:一种是通过Storyboard或者XIB可视化的方式来构建;一种是通过程序代码的方式来完成构建。两种方法各有优劣。...我们知道在iOS的loadView的默认实现逻辑是首先会到SB或者XIB中去根据视图控制器的类型去搜索是否有匹配的视图布局文件,如果有则将这个视图布局文件进行解析并构建对应的视图层次树并设置视图控制器中的那些插座变量...AutoLayout布局是一种通过视图之间的约束设置来实现布局的方式,而frame方式则是苹果早期的一种布局方式。...答案就是路由,也就是我们在处理界面跳转时不直接构建目标视图控制器而是通过一个中介者路由来实现界面的跳转。关于路由来进行页面跳转的解决方案网络上已经有很多的开源库或者实现方式了,这里就不再赘述了。

    4.4K30

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

    学习目标: 通过本文,你可以创建你的第一个Mac Application,编译并指定版本号,而且经过练习,你应该掌握: 1. 如何使用Xcode 创建Mac app 2....图片(image view)的获取方式(从硬盘或者摄像头) 7. 窗口(window)的尺寸控制 实践开始: 创建一个Mac工程其实与iOS工程非常相似,都使用Xcode,只是选择的工程模版不同?...将控制的view 添加到主窗口的容器视图(contentView)中。 3. 设置控制器view的大小与主窗口相等。...到此,与iOS开发比较,你会发现一些不同,在iOS中需要设置窗口的控制器(rootViewController),但在OSX中并不存在控制器,因此需要将view添加到窗口的contentview中。...通常情况下,table view的数据源和代理都是控制器),这一步可以通过代码设置,也可以在xib图形界面中设置: ?

    4.1K40

    iOS开发UINavigation系列四——导航控制器UINavigationController

    controller的管理         导航控制器是一个堆栈结构,只是其中管理的对象是controller,通过push与pop进行controller的切换,我们有两种方式可以创建导航控制器: /... toolbarClass:(nullable Class)toolbarClass; //使用系统默认的导航栏和工具栏,通过一个视图创建导航控制器 - (instancetype)initWithRootViewController...:(UIViewController *)rootViewController; 通过以下方法对视图控制器进行管理操作: //设置管理的视图控制器 - (void)setViewControllers:...UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;  //直接pop到视图控制器...例如A-push-B-present-C,则topViewController会返回B,visibleViewController会返回C

    1.8K20

    关于Autolayout和Masonry自动布局的几个坑

    关于Autolayout和Masonry自动布局的几个坑 自动布局 02 Mar 2016 0 Comments 前言 最近遇到一个复杂视图控制器里面有上下两个子控制器,子控制器中各自实现类似PageView...的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。...采用子控制器的原因是因为防止所有的逻辑代码都混在控制器中,所以没有使用nicklockwood的iCarousel或SwipeView,而是采用了之前一直在用的SCPageViewController...0x7f9481c9d990就是有问题视图的首地址。 当然进一步的调试需要LLDB的命令。...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。

    1.5K20

    一篇可能会让你爱上MVVM与ReactiveCocoa的文章

    它从框架界别支持MVVM模式,它让你真切地感觉到自己以前的代码真的太乱了,它也让你真正有兴趣去尝试下一些比较流行的编程模式,比如响应式,函数式,MVVM等.出于自己的实际项目需要,必须最低支持 iOS...安装 2.5版本的ReactiveCocoa来在自己的项目中使用,具体细节参见: ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!...注意需要在初始化时设置 introl和model的title,desc属性的级联关系(我喜欢这么称呼,意会,有点重写getter方法的感觉).这一步本来是在Controller中完成的,现在挪到了 ViewModel...控制器中的代码,真的被精简了不少,博客列表控制器为例,几乎占据1/2控制器代码量的网络请求与数据分页的代码,被简化为一句话: [RACObserve(self.viewModel, blogListItemViewModels...// // Created by 颜风 on 15/10/21. // Copyright (c) 2015年 iOS122.

    1.3K60
    领券