我希望在我的iOS应用中为每个UIView控制器提供单独的故事板文件。
那么我们如何为每个控制器分配不同的故事板?另外我们如何在这些之间进行导航?
我这样做是为了避免在很多人在UI上工作时发生svn冲突。
答案 0 :(得分:0)
获取对故事板的引用......
UIStoryboard *someStoryboard = [UIStoryboard storyboardWithName:@"NameOfYourStoryboard" bundle:nil];
然后从该故事板中实例化初始视图控制器......
UIViewController *initialViewController = [someStoryboard instantiateInitialViewController];
或由其故事板标识符识别的其他一些视图控制器......
UIViewController *someOtherViewControllerFromTheStoryboard = [someStoryboard instantiateViewControllerWithIdentifier:@"SomeViewControllersStoryboardIdentifier"];
之后,您可以简单地推送(在导航控制器中)或呈现新的视图控制器。
自iOS 9.0起,您甚至可以通过故事板本身的故事板引用连接故事板: https://developer.apple.com/library/prerelease/ios/recipes/xcode_help-IB_storyboard/Chapters/AddSBReference.html
答案 1 :(得分:-1)
为不同的模块保留不同的故事板是一种很好的方法。您可以按如下方式在故事板之间实现导航: -
假设您在A视图控制器中并想要推送另一个名为FabIdeaDetailViewController
的视图控制器,该控制器存在于名为FabIdeas
的故事板中: -
FabIdeaDetailViewController *horizontalListController = (FabIdeaDetailViewController*)[UIViewController instantiateViewControllerWithIdentifier:@"FabIdeaDetailViewController" fromStoryboard:@"FabIdeas"];
[self.navigationController pushViewController:horizontalListController animated:YES];
现在推送另一个名为WishlistViewController
的视图控制器,它位于名为Wishlist
的故事板中:
UIViewController *WishlistViewController = [UIViewController instantiateViewControllerWithIdentifier:@"WishlistViewController" fromStoryboard:@"Wishlist"];
[self.navigationController pushViewController:WishlistViewController animated:YES];