Xcode 6 - 没有故事板的模板

Posted

技术标签:

【中文标题】Xcode 6 - 没有故事板的模板【英文标题】:Xcode 6 - Template without Storyboards 【发布时间】:2014-07-26 17:14:18 【问题描述】:

我知道这听起来微不足道,但我对 beta 3/4 中缺少适用于 ios 应用的“空”模板感到非常恼火。

我讨厌 Storyboard 方法,(IMO 认为它始终是最优雅的方法是天真的)。

事实上,对于我的大多数用例,Storyboards 根本不起作用。

谁能告诉我如何在没有 SB 的情况下使用空模板并到达起点(带有窗口的应用程序委托)? - 或将其他模板之一迁移到非 SB。

准备segue的方法让我不寒而栗,太丑了……

提前致谢。

【问题讨论】:

只是好奇,您所说的故事板不是一种选择的“用例”是什么?为什么讨厌prepareForSegue: 方法? @duci9y - 当然,我更喜欢程序化方法。我喜欢用代码做事。对于(例如)有 20 多个 VC 的大型复杂项目,Storyboard 简直是不雅的,而且,我发现,适得其反。关于prepareForSegue ...好吧,IMO我认为建议的用法是完全不好的编码习惯。您使用“魔术”字符串来引用您要转换到哪个 VC 的方式怎么样!?我更喜欢创建我的 viewController 并根据需要呈现/推送它。想象一下在 prepareForSeague 中可能有 20 个不同的 VC 按名称引用。多么令人作呕的范式。 @duci9y 你能想象带有 20/30 视图控制器的 SB 是什么样子吗? - 它只是不起作用!这对于小项目来说很重要,但对于更大的项目就没有效果了。 想象一下你想设计一个自定义容器......故事板肯定有'containerView'对象,但你可以通过它构建的只是最简单的容器。对我来说,另一个主要缺点是 UI 代码的拆分:有些东西你不能在 IB 中设置,所以你必须在代码中设置它们(所有 CALayer 的东西,等等) - 现在你设置一些东西在代码和 IB 中的一些东西中,你总是不得不想“嗯,我在哪里设置的?” - 对我来说没有生产力。但是,Xcode6 添加了@IBDesignable,这是一个很酷的功能,我觉得 SB 就是这样 ;) 肯定会的!我的意思是它不适合更复杂的容器。 - 也许我对 IB 的经验不够,但这就是我在开始为 iOS 开发时探索故事板时的印象。 - 我猜@duci9y 一针见血:每个人都有自己的;) 【参考方案1】:

我也不喜欢故事板。

这是我从 SB 模板到“从代码设计”到漂亮和干净的做法:

从单视图模板创建项目(为您提供最少的情节提要“boilerplaite”) 删除情节提要

转到您的 AppDelegate(.m / .swift) 并通过 application:didFinishLaunchingWithOptions: 中的代码创建一个 UIWindow

CGRect screenBounds = [[UIScreen mainScreen] bounds];

UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds];

UIViewController *viewController = [[UIViewController alloc] init];
[window setRootViewController:viewController];

[window makeKeyAndVisible];

[self setWindow:window];

记得去选择你的目标并删除“部署信息”下“常规”中的“主接口”条目

从现在开始,你准备好了,Xcode 不会再用 SB 来烦你了 :)

不幸的是,到目前为止,我还没有找到将项目保存为模板的方法:/

【讨论】:

立即为“我觉得你兄弟”+1 然而,.pch 文件将丢失。你能做的是,1) create a header file with whichever name.pch2) Project Setting->Apple LLVM 6.0 - Language->Precompile Prefix Header(YES)3) Put the path of Prefix Header. Ex) As of xCode 6, $SRCROOT/$PROJECT_NAME/Info.pch. @YoonLee -- 确实,如果您想要 PCH,则必须手动创建它们,尽管它们不是必需的,甚至可能在所有情况下都不推荐使用,例如,请参阅 this *** thread。 【参考方案2】:

您可能不想只删除文件而不告诉项目的其余部分..

您要编辑 plist 并删除:

启动屏幕界面文件基本名称 主情节提要文件基本名称

这样,您的应用就不会寻找不存在的文件。

然后,添加 Cabus 所说的代码(这正是 Xcode 在 Xcode 5 中提供的代码)。

【讨论】:

【参考方案3】:

有一个没有storyborad的xcode 7项目模板的github库,它遵循Cabus的回答。

https://github.com/elprup/xcode7-project-template

【讨论】:

我是一个视觉型的人,但我发现故事板令人困惑。我的应用程序需要屏幕边界来设置布局,并且从 iPhone 4 到 6s 都幸存下来,无需更新。感谢您提供此链接。

以上是关于Xcode 6 - 没有故事板的模板的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8.1 无法将 iPad 故事板添加到具有现有 iPhone 故事板的通用应用程序

在 Xcode 5 中修改故事板后如何同步本地化故事板的字符串

仅故事板的 Xcode 9.2 挂起问题

来自故事板的原型单元不创建 UILabel 等

如何在 XCode 中预览故事板的不同视图控制器

Xcode 故事板的默认设计尺寸是多少?