首页 > 解决方案 > 如何确保 iOS 项目中故事板的名称字符串是正确的?

问题描述

在 iOS 项目中:

我总是以这种方式通过 UIStroyboard 创建一个 UIViewController。迅速:

       let sb = UIStoryboard(name: "XXXlectViewController", bundle: Bundle.main)

目标-c

       UIStoryboard *sb = [UIStoryboard storyboardWithName:@"XXXlectViewController" bundle:[NSBundle mainBundle]];

然后我从情节提要访问 UIViewController。

如果其他人不小心更改了名称字符串。该项目无法按预期工作。

有时,我无法确定我输入的字符串是否正确。

如您所知,如果我使用纯代码创建 UIViewContrller。

let xxxVC = xxxVC()

XXXVC *vc = [[XXXVC alloc] init];

当我命令 B/R 时,我会收到错误警报。这可以帮助我们发现错误。

如何确保 iOS 项目中故事板的名称字符串是正确的?
如何减少这种使用情节提要创建 UIViewControll 实例的方式的危险?
您是否使用 Unit 文本来检查 UIStoryboard 创建的 UIViewController?
我该怎么做?

标签: iosobjective-cswiftuistoryboard

解决方案


对于 Objective-C,您可以将情节提要名称声明为常量并在代码中使用它们。

在你的.h文件中

FOUNDATION_EXPORT NSString *const MainStoryboaardIdentifier;

在你的.m文件中

NSString *const MainStoryboaardIdentifier = @"Main";

对于 swift,最简单的方法是为它们定义一个枚举:

enum StoryboardIdentifier: String {
    case Login = "Login"
    case Main = "Main"
    case Options = "Options"
}

并使用.Main.Login

这样,自动完成功能也将起作用,并且可以避免输入错误。此外,单元测试也应该更容易。在初始化程序中使用特定标识符UIStoryboard应该会产生相应的 viewController。


推荐阅读