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.pch
2) 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 故事板的通用应用程序