有没有觉得,storyboard有时候不是很方便,因为所有的东西都要放在一个viewcontroller下 - V2EX
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 14097 次点击
    这是一个创建于 4453 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个复杂的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     Solana     1073 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 23:48 PVG 07:48 LAX 15:48 JFK 18:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86