初次使用 Storyboard 的经历
回顾一下拿Storyboard练手学习iOS完成APP的经历.
总结: 如果App之后的迭代不会有大改动,可以用,加快开发速度. 否则改起来相当麻烦,比如各种ID的引用全是通过字符串,只有运行时才会报错 . 不过用来写demo还挺方便的. 而且我肯定有自己漏学知识而导致绕了弯路的情况, 比如很多可以复用的地方重复实现, 冗余很高.
快速搭建
不得不说, Storyboard的可以快速地把原型的轮廓实现出来,非常直观.
旧代码过于遥远, 已经找不到截图了. 如图所示, 原型给的跳转逻辑和每一个页面的大致样子都可以拖出来.
反思
对于我来说, Storyboard除了方便快捷搭出来初版,暂时就没想到了. 隐藏了太多很重要的元素.
上面的截图为例子. NavigationController只是一个容器(VC栈), 使用过程中不会出现. 对于root VC, 以及之后的present方式, 在初次使用时都是不必了解的. (所以我学到的真的太少啦)
NavigationController 以及页面的跳转
对于一个NavigationController, 是一个栈, 用来容纳VC. 首先需要设置一个rootVC作为第一个出现的VC. 依据具体情况,后续的VC在sb中连线segue通过show的方式出现,但在代码实现时都要依托NavigationController进行pop或者push. 而不是直接present. 或者说, 通过使用show让App自己判断该通过什么方式展示.
所以这时候要去康康苹果的文章 Showing and Hiding View Controllers
用到的就是下面这俩⬇️
- show 可以自行判断该通过什么方式展示vc. 你也在不同的地方可以通过重写去自定义实现方式.
- present 方式是modal方式去展示vc,后续系统更新后有了style, Full-screen presentations always replace the previous content, but sheet-style presentations may leave some of the underlying content visible
TableviewCell 的复用
这应该是自己的失误, 完全按照原型直接拖出来的, 其实这几层菜单可以复用,代码实现(当然这样视觉上就不直观了)
在Storyboard里面, 你是在一个tableview里面自定义的TableViewCell, 别的tableview就用不到了.

目前的解决方式
当然代码实现是可以的. 这里为了”直观”. 用XIB做一个简单的cell.
新建XIB-绑定Class-连线

使用的时候去给对应的tableview注册cell.注意是UINib取得cell的
tableView.register(UINib(nibName:"KeyValueTableViewCell",bundle:nil), forCellReuseIdentifier: "keyValueCell") |
Storyboard拆分 (Stroyboard reference)
一个Storyboard里面的Scene过多, 打开的时候就卡得不行(Storyboard太吃内存). 可以根据相关性拆分成多个Storyboardboard.既便于开发, 还能复用.
这里是依据多个Tab拆的.(TabBarController 装了五个Navigation Controller)

具体操作就是选中你要拆走的Scene, 然后Editor-Refactor to Storyboard, 生成新的Storyboard. 更多详细的Storyboard reference请自行搜索