xib替代main.storyboard
xib替代main.storyboard
其实xib和storyboard在编译时都会变成nib文件。
删除storyboard
删除main.storyboard和ViewController
创建新VC
因为上一步干脆删掉了自带的ViewController,所以这里创建一个新的VC。
创建
创建自定义VC,叫做“TestXibViewController”:
- File–>new–>file…–>ios–>Cocoa Touch Class。
- 命名TestXibViewController,记得选中Also create XIB file然后确认即可。
此时会自动生成两个文件,都叫“TestXibViewController”,只不过一个swift,一个xib文件。
补充
- 如果上一步没选中Also create XIB file,就不会自动关联这两个文件。
没自动关联解决办法:
- 打开xib,选择左侧窗口的Placeholders的File’s Owner,点击;
- 右侧工具栏选中最后一个tab(连接),可以看到有一个view没有连接,
- 点击view后的加号,按住control,拖到屏幕上的view视图上就算建立连接了。
删除旧配置
- IOS13之前:
app配置的Deployment Info里找不到Main Interface去清除默认的main.storyboard。 - IOS13之后:
删除info.plist中的Main storyboard file base name和Application Scene Manifest下的Storyboard Name。
让新建VC可以展示
编辑window,让其指向TestXibViewController,作为展示。
- IOS13之前:
AppDelegate的application(didFinishLaunchingWithOptions)重载方法:
//实例化上面定义的window,参数frame描述view的位置和大小
self.window = UIWindow(frame: UIScreen.main.bounds)//UIScreen.main.bounds指的是屏幕边界
//设置UIWindow有一个根视图叫TestXibViewController
self.window?.rootViewController = TestXibViewController(nibName: "TestXibViewController", bundle: nil)
self.window?.makeKeyAndVisible()//显示app窗口
//注意:这个类应该已经定义了一个 var window: UIWindow? 前面的self.window就是指向它。
- IOS13之后:
SceneDelegate的scene(willConnectTo)重载方法:
if let windowScene = scene as? UIWindowScene {self.window = UIWindow(windowScene: windowScene)self.window?.rootViewController = TestXibViewController(nibName: "TestXibViewController", bundle: nil)self.window?.makeKeyAndVisible()
}
补充:为什么会有这个差异?
iOS13的推出,在之前AppDelegate的基础上多出了一个SceneDelegate,
会将AppDelegate里的lifecycle的那些代理方法转交给SceneDelegate。
其实就是UI的东西委托给SceneDelegate了,AppDelegate更专注app本身了。
SceneDelegate,是iPadOS用来做多窗口支持的
xib替代main.storyboard相关推荐
- MacOS-MacAPP使用Main.storyboard启动视图程序踩坑
由于主做移动端APP的iOS开发,对于Mac端的APP开发较少,我也本以为,简单的以为会和iOS差不多 雄赳赳,气昂昂 没想到啊,真是没想到啊,帅不过3秒!!!尴尬!!! 在程序视图启动入口处就挂了, ...
- (0108)iOS开发之Xcode11: 删除默认Main.storyBoard、自定义根控制器
Xcode11 新建OC 工程后,发生了很大的变化,发现多了两个文件夹. 原因: Xcode自动新增了一个SceneDelegate文件, 也就是说在iOS13中Appdelegate的作用发生了改变 ...
- The document “Main.storyboard” requires Xcode 8.0 or later
The document "Main.storyboard" requires Xcode 8.0 or later 之前项目是 Xcode 7 创建的,使用 Xcode 8 或 ...
- xcode11新项目删除main.storyboard 两种方法
方法一 心急的童鞋按照老操作完成后再按照如下操作即可 /**弃用storboard1.info.plist去除<key>UIApplicationSceneManifest</key ...
- 解决UITableView xib添加到Storyboard出现IB Designables错误
之前提过 Swift下自定义xib添加到Storyboard 的方法.最近有人问说按照文中方法会出现IBDesignables错误,导致在xcode Storyboard中无法显示. 这个应该是我漏讲 ...
- 删除了Main.storyboard后,实现代码写的ViewController和用storyboard实现的viewController的跳转
了解Segue的一些概念 需要解决的需求:删除了Main.storyboard后,实现代码写的ViewController和用storyboard实现的viewController的跳转 UIStor ...
- nib、xib、storyboard(故事板)
nib:NeXT Interface Builder的缩写 xib:XML nib的缩写 相同点: nib和xib都是Interface Builder的图形界面设计文档.Interface Buil ...
- 关于代码手写UI,xib和StoryBoard
代码手写UI 这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用.Geek们喜欢用代码构建UI,是因为代码是键盘敲出来的,这样可以做到不开IB,手不离开键盘就完成工作,可以专注于编码环境, ...
- 【Xamarin挖墙脚系列:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧(转)】...
正愁如何选择构建项目中的视图呢,现在官方推荐画板 Storybord...但是好像 xib貌似更胜一筹.以前的老棒子总喜欢装吊,用代码写....用代码堆一个HTML页面不知道你们尝试过没有.等页面做出 ...
最新文章
- 关于B站除夕夜被攻击
- 第25节 典型应用集成技术
- Pixhawk之姿态解算篇(4)_补充篇
- PathRemoveFileSpec函数
- Django怎么配置mysql数据库_Django如何配置mysql数据库
- Repository和dao
- nft文件传输_Nancy之文件上传与下载
- glob-parent Regular expression denial ofservice
- git 设置和取消代理
- Python有趣小程序代码
- [MATLAB]线性方程组应用--小行星运行轨道计算问题
- 邮箱用户计算机名格式,电子邮箱怎么写 用什么格式
- ECCV2020-DETR笔记
- 内置python数据类型_python基础之数据类型及内置方法
- ANC主动降噪耳机有哪些?ANC主动降噪耳机推荐!
- #2 – Rendering Tiers(WPF渲染级别)
- k8s eviction机制
- 大数据征信进入洗牌期,区块链或成新一代征信系统底层架构
- gitee提交代码到仓库
- java 乘法 位移_Java 使用位移运算实现乘法
热门文章
- text-align中justify属性的使用方法
- textarea 修改placeholder样式
- 一碗毒鸡汤,让你活的更通透
- 释放自己内心的能量---赞一下周光耀老师
- %@ Application Codebehind=Global.asax.cs Inherits=XXX.MvcApplication Language=C# %
- tplink迷你路由器中继模式_TP-link mini(迷你)无线路由器设置(Repeater模式)
- VS2015中新建项目后,无法添加新的源文件头文件
- TI 高精度实验室《运算放大器系列--带宽》
- win7无损分区和调整合并
- Yonex VT-ZF 与李宁N90对比