V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
refresh
V2EX  ›  iDev

有没有觉得,storyboard有时候不是很方便,因为所有的东西都要放在一个viewcontroller下

  •  
  •   refresh · 2013-10-19 21:06:44 +08:00 · 13646 次点击
    这是一个创建于 4044 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个复杂的view,像xib,我可以分开成多个view,然后很分散去布局。但在storyboard下,必需要放到viewcontroller下,结果就是非常乱。

    或者是我不知道,有什么好办法没有?
    29 条回复    2014-07-21 10:19:24 +08:00
    tangzs
        1
    tangzs  
       2013-10-19 21:24:02 +08:00
    storyboard只是提供多一种选择;
    一个应用可以多个storyboard,比如将可重用的一个模块(多个ViewController)做一个storyboard,管理起来还是感觉比以前好吧;
    也可以和以前的xib混用的,所以旧代码拿过来也没压力。
    PrideChung
        2
    PrideChung  
       2013-10-19 22:19:55 +08:00
    我已经退回到xib了,view复用比较方便。写测试的时候为了从storyboard里面取一个view controller出来必须要给个名字,太麻烦了。
    alexrezit
        3
    alexrezit  
       2013-10-19 22:39:15 +08:00
    我觉得... sb 这种东西... 实在不是完美主义者能用的...
    11
        4
    11  
       2013-10-19 22:48:55 +08:00
    我是觉得 segue 管理起来好麻烦;
    而且 storyboard 很卡;
    小屏幕下完全无法接受;
    楼主说的 subview 也是个问题。
    angelface
        5
    angelface  
       2013-10-19 23:01:45 +08:00
    除非非常简单的ui, 否则全部代码处理,无论是storyboard还是xib都不用,scm太麻烦
    txx
        6
    txx  
       2013-10-19 23:01:53 +08:00
    subView 可以用 container 不过 sb 在 XCode 5 上卡成狗啊。。。。。
    ewangke
        7
    ewangke  
       2013-10-19 23:04:40 +08:00
    @angelface Xcode 5的xib SCM已经不是问题了
    一直用xib,不用storyboard
    PrideChung
        8
    PrideChung  
       2013-10-19 23:12:02 +08:00
    @11 segue的时候有90%的情况要传一些参数,于是又得去prepareForSegue:里面判断一下identifier,实在是有够麻烦的。而且如果你的App自定义的东西比较多的话,有些地方无法用segue,storyboard很多时候根本不能显示应用真正的流程。做Web开发的时候也没什么storyboard之类的东西,都是一个个view地写过来的,也没发现有什么搞不清流程的情况,我现在觉得storyboard产生的问题比解决的问题还多。 storyboard最有用的功能就是静态的table view了,可以单独用一个storyboard来存放。
    11
        9
    11  
       2013-10-19 23:17:57 +08:00
    @PrideChung 对啊,如果用 storyboard 控制流程,那么竟然还有个很 bug 的 method:

    performSegueWithIdentifier:sender:

    这样完全可以调用其他不连接起来的 view 了。

    那个 static table view 的确很有用。
    ShengjiaWANG
        10
    ShengjiaWANG  
       2013-10-19 23:29:16 +08:00
    之前苦于SB多人协作太难弄,所以我一般是能代码就纯代码搞定。不过现在SB似乎在这方面好很多了,而且纯代码上auto layout似乎有点苦啊。。。
    refresh
        11
    refresh  
    OP
       2013-10-19 23:42:27 +08:00 via iPad
    @ShengjiaWANG 我以前也是用手写代码,现在改storyboard和xib,非常好,推荐
    @11 我以为卡是我电脑问题,8g内存还凑合

    @PrideChung 这个地方也有点麻烦
    @txx 没太明白
    xuan_lengyue
        12
    xuan_lengyue  
       2013-10-20 01:04:24 +08:00
    Storyboard 一个很强大的功能是 static tableview cell,这个找不到其他解决方案。
    其实 Storyboard 和 xib 结合能解决大部分的问题。
    PrideChung
        13
    PrideChung  
       2013-10-20 01:24:09 +08:00   ❤️ 2
    @11
    storyboard可以切分成几个小的,没那么占内存打开也比较快,但是因为无法跨 storyboard 进行 segue,只能按老一套的来,segue的作用就没了。如果 segue 不能真正地显示出整个应用的流程,反而可能会误导人,我觉得还不如不用。而且切分了以后很麻烦的一点是你找一个view controller还得先想想放在哪个 storyboard 里面了。

    @ShengjiaWANG
    Xcode 5 的 xib 和 storyboard 的格式都改了,简短了许多而且相当可读,合并冲突不成问题。如果花点时间了解一下格式手写 xib 的代码也是有可能的,文档标记语言比起编程语言更适合用来描述界面。

    手写界面还用 Auto Layout的话代码量多好多,还是用 Xcode 5 的 IB 吧,可以给你很多有用的提示,也不会强制给你加一堆constrain。 Xcode 4 的是渣渣别提了。

    另外 Auto Layout 真的没必要作为默认,有些简单的布局Spring & Structs 更方便。xib 比 storyboard 好的另外一点是 Auto Layout 的设置可以逐个 xib 分开来设置,需要再启用。storyboard 只能一刀切。

    @refresh
    我现在是以 xib 为主,偶尔用 storyboard 画画 settings 和 about 界面的table view,觉得挺好的。

    对了,用xib有一点很爽的,创建一个view controller其实无需指定xib的名字的。只要你的xib命名跟view controller一样(除后缀名),然后
    [[ViewController alloc] init]
    iOS会自动找到对应的xib,对于iPad的xib,写成 ViewController~ipad.xib 就行了。
    ShengjiaWANG
        14
    ShengjiaWANG  
       2013-10-20 02:29:17 +08:00
    @PrideChung 我几乎完全同意你说的,合理的结合才是王道,看来现在唯一阻碍我的就是惰性了。习惯了代码控制一切,对Storyboard和xib一直有抵触情绪,不是很熟悉,需要重新适应。

    @xuan_lengyue 嗯,我是该尝试一下了。
    so898
        15
    so898  
       2013-10-20 03:50:02 +08:00
    曾经试过xib+SB+代码混写……
    结论是还是代码顺手,其他两个都能把我的电脑拖死机
    果然就算是rMBP顶配也是渣渣啊
    austinchou0126
        16
    austinchou0126  
       2013-10-20 10:06:42 +08:00 via iPhone
    最近刚好也在纠结这个问题,感谢@PrideChung
    refresh
        17
    refresh  
    OP
       2013-10-20 11:57:51 +08:00
    @ShengjiaWANG 我也觉得auto layout挺鸡肋的,比原来那个layout是多了一些功能,但我每次编译都要看到100多个警告,基本上都是autolayout的问题。

    @so898 sb慢是一个大问题,代码效率真心不高,特别是改动的时候,一个项目中有一半以上的代码在处理布局。我最近几个项目完全改成了sb或xib,感觉还是不错的,刚用有点不爽,那是因为离开的舒适区的一种自然反应。
    PrideChung
        18
    PrideChung  
       2013-10-20 15:47:27 +08:00
    @refresh Auto Layout不鸡肋,只是对于简单的布局来说是杀鸡用牛刀,所以像我上面说的用 xib 来做界面 ,对于需要复杂布局的 view 单独启用 Auto Layout 最合适。
    xsown
        19
    xsown  
       2013-10-20 16:59:42 +08:00
    等到明年水果推出传说中6寸 iPhone(另一说是4.8寸?)的时候 autolayout 就显神通了
    refresh
        20
    refresh  
    OP
       2013-10-20 17:21:02 +08:00
    @xsown autolayout概念很好,但只是不好操作,复杂一点的布局弄死人了,复杂的布局应该可以分开设计,这点可以学习CorelDarw或者AI,组合图层点进去之后可以进入到具体的图层进行设计。
    @PrideChung 复杂的用xib是一个不错的做法
    so898
        21
    so898  
       2013-10-20 17:28:43 +08:00
    @refresh 我主要是不喜欢那个拖动操作啥的,触控板拖动控件还好说,拖动IB方法简直就是难过啊……
    xujialiang
        22
    xujialiang  
       2013-10-20 22:13:45 +08:00 via Android
    view controller 可以有很多啊。。。我晕
    xujialiang
        23
    xujialiang  
       2013-10-20 22:15:06 +08:00 via Android
    storyboard 里,每个controller都可以有view controlller
    refresh
        24
    refresh  
    OP
       2013-10-20 22:25:24 +08:00
    @xujialiang 我的意思是,所有的control都必需放入viewController内,不像xib,可以各View分开放。
    bigporker
        25
    bigporker  
       2013-10-22 13:45:40 +08:00
    同感,我还是喜欢xib,不过XCode5好像不能单独创建xib文件了,只能和class文件一起创建
    同时,我觉得arc对我来说也是多余
    refresh
        26
    refresh  
    OP
       2013-10-22 13:46:49 +08:00
    @bigporker arc还是不错的,起码我觉得。另外,xib是可以单独创建的,你创建的时候选择view就可以了。
    bigporker
        27
    bigporker  
       2013-10-22 14:23:29 +08:00
    @refresh arc不算真正的gc,只是语法糖,还是习惯自己控制内存。
    我回头试下直接创建view,如果可以的话,直接就放弃storyboard
    sprhawk
        28
    sprhawk  
       2013-10-24 19:34:30 +08:00
    新写的项目用Storyboard,除了IB有点卡外,我觉得Storyboard很好用,很多界面的内容都直接通过IB去定义好,流程也画好,只需要在ViewController做一个判断,赋值就可以了。
    我觉得用Storyboard做快速建模效率是非常之高的
    ipconfiger
        29
    ipconfiger  
       2014-07-21 10:19:24 +08:00
    知道为什么用不习惯storyboard么?很简单,就是因为屏幕不够大,换个27寸的iMac就知道storyboard的爽了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5146 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 03:50 · PVG 11:50 · LAX 19:50 · JFK 22:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.