У меня есть эта строка кода:
[UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
и файл раскадровки. Где я действительно вставляю имя контроллера и где я могу найти пакет?
Это глупый вопрос, но я не могу понять это
У меня есть эта строка кода:
[UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
и файл раскадровки. Где я действительно вставляю имя контроллера и где я могу найти пакет?
Это глупый вопрос, но я не могу понять это
Все очень просто!
Это код:
UIStoryboard *storyboard =
[UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle mainBundle]];
Где @ "Главная раскадровка" - это имя вашего файла .storyboard. Пакет - это просто пакет, содержащий ваш файл .storyboard, обычно это основной комплект вашего приложения.
Если вы хотите получить доступ к некоторым UIViewControllers, например, с целью подталкивания его в стек вашего UINavigationController, вы должны сделать это:
UIViewController *yourViewController =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
Вы можете установить идентификатор в свой UIViewController в Индексе идентификации идентификаторов Xcode!
Надеюсь, это поможет вам!
Параметр name
- имя вашего файла .storyboard
(без расширения).
bundle
обычно является основным пакетом вашего приложения. В общем, вы проходите nil
, чтобы среда выполнения выполняла поиск вашего файла раскадровки в основном пакете по умолчанию (так же, как если бы вы проходили [NSBundle mainBundle]
). И на практике у вас обычно есть только один пакет в приложениях iOS, который является основным пакетом, представляющим ваш пакет IPA, поэтому nil
является общим значением для этого параметра)
Например, если у вас есть раскадровка с именем MyStory.storyboard
, вы будете писать:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStory" bundle:nil];
На самом деле все это объясняется в документации Apple для этого метода.
storyboardWithName: расслоение:
Создает и возвращает объект раскадровки для указанного ресурса ресурса раскадровки.
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil
Параметры
name
: Имя файла ресурса раскадровки без расширения имени файла. Этот метод вызывает исключение, если этот параметр равен нулю.storyboardBundleOrNil
: пакет, содержащий файл раскадровки и связанные с ним ресурсы. Если вы укажете nil, этот метод будет выглядеть в основном пакете текущего приложения.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
Swift 5 версия:
UIStoryboard(name: "Main", bundle: nil)
В этом примере я использовал стандартный раскадровочный файл "Main" в качестве ссылки.