初次使用 Storyboard 的经历

回顾一下拿Storyboard练手学习iOS完成APP的经历.

总结: 如果App之后的迭代不会有大改动,可以用,加快开发速度. 否则改起来相当麻烦,比如各种ID的引用全是通过字符串,只有运行时才会报错 . 不过用来写demo还挺方便的. 而且我肯定有自己漏学知识而导致绕了弯路的情况, 比如很多可以复用的地方重复实现, 冗余很高.

快速搭建

不得不说, Storyboard的可以快速地把原型的轮廓实现出来,非常直观.

旧代码过于遥远, 已经找不到截图了. 如图所示, 原型给的跳转逻辑和每一个页面的大致样子都可以拖出来.

反思

对于我来说, Storyboard除了方便快捷搭出来初版,暂时就没想到了. 隐藏了太多很重要的元素.

上面的截图为例子. NavigationController只是一个容器(VC栈), 使用过程中不会出现. 对于root VC, 以及之后的present方式, 在初次使用时都是不必了解的. (所以我学到的真的太少啦)

对于一个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请自行搜索

WWDC的相关内容

0%