【问题标题】:iOS Universal App without storyboard or xib file没有故事板或 xib 文件的 iOS 通用应用程序
【发布时间】:2012-07-04 01:45:18
【问题描述】:

我有一个关于通用应用程序的问题。我的应用程序不会有情节提要或 xib 文件。没有它有可能编写通用的 iPhone/iPad 应用程序吗?我找到了一些教程如何创建通用应用程序with故事板,但我不想(我不能)在我的项目中使用这个功能。

如果可能,我该怎么办?如果我必须只在 ViewControllers 中进行更改?我开始这样做了,我不会更改旧项目,所以我可以做任何事情 - 我应该学习什么/我应该记住什么?

我的目标是 iOS 5。

编辑:

我在资源文件中有屏幕信息,并且我的 rootViewController 或任何其他 ViewController 将在编译时创建,所以我不能有 xib 文件,我不能使用 Interface Builder 在 xib 上放置按钮,因为我没有' 甚至不知道我会有多少按钮。在我的项目中运行之前,我不知道我有多少个屏幕。

【问题讨论】:

标签: iphone objective-c ios


【解决方案1】:

你不仅可以在没有Interface Builder 的情况下编写任何类型的 iOS 应用程序,而且实际上它更易于测试和柔韧。在 IB 风格的项目中,一些 auto layout 技巧也很困难(不可能?)。

有一个令人难以置信的令人印象深刻的库,名为 Masonry,它包装了 NSLayoutContraint 语法。这使得对视图进行子类化非常令人愉快,而不必使用丑陋的 VFL 或非常冗长的 NSLayoutContraint 语法(甚至不去解决框架设置...blech!)。 IB 风格的应用程序还促进了不良的软件开发实践和反模式(只是将所有内容都倾倒在视图控制器演示中。没有关注点分离!)。此外,由于合并问题,在使用 Nibs、Xibs 和 Storyboard 的同时,在大型团队(恕我直言,甚至是小型团队)上工作更加困难。

最重要的是,在以这种方式编写代码时(再次恕我直言),您可以更深入地了解您正在使用的类(UIViewUIResponder 等)。有一篇有趣的文章更详细地概述了其中一些问题:http://doing-it-wrong.mikeweller.com/2013/06/ios-app-architecture-and-tdd-1.html 这绝不是唯一讨论此问题的文章。此外,这将有助于您的应用委托:creating a universal window-based iphone app without generated xib file

【讨论】:

    【解决方案2】:

    这当然是可能的,在我发布的许多应用程序中,我只使用过一次故事板。至于不使用 XIB,我不确定为什么你会想要这样做。您可以在运行时在 init 方法中布置您的视图,但我觉得这只会让您自己过分困难。您可以为 iPad 设置一个 XIB,为 iPhone 设置一个,这样您就可以专门为每个设备定制 UI。

    也许如果您更详细地了解为什么要对自己施加此要求,我们可以讨论是否值得为此付出努力。

    祝你好运。

    【讨论】:

    • 我必须这样做,因为在运行时,我可能不知道我的根屏幕应该是什么样子。我的意思不是在表格视图中记录。这可能是 tableView、scrollView 等等……
    • 我刚刚编辑了我的原始帖子。据我了解,这个项目我不能使用 xib 或故事板。
    • 你需要多花一点时间在架构上,我认为你可以创建一个基本的 XIB,然后使用该 XIB 和任意数量的不同视图控制器进行初始化。一旦您将每个 View 控制器实例定义为 XIB 所期望的 IBOutlet,您就可以开始运行了。这就是为什么 View Controller 有一个名为“InitWithNibName”的构造函数。它允许该视图控制器插入您希望的任何 XIB。
    • XIBs/Storyboards 比代码慢,增加了你的应用程序的大小,在 git 提交中不可读,并且不像代码那样模块化。在破坏自己之前检查自己。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2013-06-11
    相关资源
    最近更新 更多