Как убедиться, что строка имени раскадровки в проекте iOS верна? - PullRequest
1 голос
/ 02 мая 2020

В iOS проекте:

Я всегда таким образом создаю UIViewController от UIStroyboard. swift:

       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?
Используете ли вы Текст блока для проверки UIViewController, созданного UIStoryboard?
Как я могу это сделать?

1 Ответ

0 голосов
/ 02 мая 2020

Для 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.

Таким образом, автоматическое заполнение также будет работать, и опечатки можно избежать. Кроме того, модульное тестирование также должно быть проще. Использование идентификатора c в инициализаторе UIStoryboard должно привести к соответствующему viewController.

...