利用 VC 以编程方式在应用程序委托中创建
Utilizing VC create in app delegate Programmatically
我用的是THTinderNavigationController。使用此导航控制器,可以从 appDelegate 中以编程方式创建 3 个 viewControllers(VC)。我只是想知道如何将每个视图控制器 link 变成我自己的 3 个不同的 VC 或替换它们。或者用我在故事板上制作的替换它们。
用 3 个不同的 viewController 替换 THTinderNavigationController 演示中的 viewController 的最佳方法是什么?我确信这很简单,但由于我是初学者,我发现自己解决这个问题是一项非常难以完成的任务。
在此先感谢大家,任何帮助将不胜感激。
这是 appDelegate 的样子。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
THTinderNavigationController *tinderNavigationController = [[THTinderNavigationController alloc] init];
UIViewController *viewController1 = [[UIViewController alloc] init];
viewController1.view.backgroundColor = [UIColor lightGrayColor];
UIViewController *viewController2 = [[UIViewController alloc] init ];
viewController2.view.backgroundColor = [UIColor whiteColor];
UIViewController *viewController3 = [[UIViewController alloc] init];
viewController3.view.backgroundColor = [UIColor lightGrayColor];
tinderNavigationController.paggedViewControllers = @[
viewController1,
viewController2,
viewController3
];
tinderNavigationController.navbarItemViews = @[
[[NavigationBarItem alloc] init],
[[NavigationBarItem alloc] init],
[[NavigationBarItem alloc] init]
];
[tinderNavigationController setCurrentPage:1 animated:NO];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = tinderNavigationController;
[self.window makeKeyAndVisible];
return YES;
}
已编辑
您能否运行在模拟器中无误地执行此代码?如果是这样,当你这样做时,模拟器上会出现什么?如果没有,请确保您已将示例项目(THTinderNavigationController.h
和 NavigationBarItem.h
)中的所有文件以及 AppDelegate.h
.
导入到您的项目中
更新
好的,所以如果你可以 运行 代码就好了,那么要用故事板中的视图控制器覆盖项目中的原始视图控制器,你可以执行以下操作:
1) 确保你的故事板中有一些带有故事板 ID 的视图控制器(见下面的屏幕截图)。
2) 在如下代码中实例化您的自定义视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController3 = [storyboard instantiateViewControllerWithIdentifier:@"Orange"];
*请注意,"Orange" 只是我提供给视图控制器的故事板 ID。你可以选择任何你想要的。
3) 确保将新的视图控制器放入 peggedViewControllers
属性:
tinderNavigationController.paggedViewControllers = @[viewController1, viewController2, viewController3];
我用的是THTinderNavigationController。使用此导航控制器,可以从 appDelegate 中以编程方式创建 3 个 viewControllers(VC)。我只是想知道如何将每个视图控制器 link 变成我自己的 3 个不同的 VC 或替换它们。或者用我在故事板上制作的替换它们。
用 3 个不同的 viewController 替换 THTinderNavigationController 演示中的 viewController 的最佳方法是什么?我确信这很简单,但由于我是初学者,我发现自己解决这个问题是一项非常难以完成的任务。
在此先感谢大家,任何帮助将不胜感激。
这是 appDelegate 的样子。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
THTinderNavigationController *tinderNavigationController = [[THTinderNavigationController alloc] init];
UIViewController *viewController1 = [[UIViewController alloc] init];
viewController1.view.backgroundColor = [UIColor lightGrayColor];
UIViewController *viewController2 = [[UIViewController alloc] init ];
viewController2.view.backgroundColor = [UIColor whiteColor];
UIViewController *viewController3 = [[UIViewController alloc] init];
viewController3.view.backgroundColor = [UIColor lightGrayColor];
tinderNavigationController.paggedViewControllers = @[
viewController1,
viewController2,
viewController3
];
tinderNavigationController.navbarItemViews = @[
[[NavigationBarItem alloc] init],
[[NavigationBarItem alloc] init],
[[NavigationBarItem alloc] init]
];
[tinderNavigationController setCurrentPage:1 animated:NO];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = tinderNavigationController;
[self.window makeKeyAndVisible];
return YES;
}
已编辑
您能否运行在模拟器中无误地执行此代码?如果是这样,当你这样做时,模拟器上会出现什么?如果没有,请确保您已将示例项目(THTinderNavigationController.h
和 NavigationBarItem.h
)中的所有文件以及 AppDelegate.h
.
更新
好的,所以如果你可以 运行 代码就好了,那么要用故事板中的视图控制器覆盖项目中的原始视图控制器,你可以执行以下操作:
1) 确保你的故事板中有一些带有故事板 ID 的视图控制器(见下面的屏幕截图)。
2) 在如下代码中实例化您的自定义视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController3 = [storyboard instantiateViewControllerWithIdentifier:@"Orange"];
*请注意,"Orange" 只是我提供给视图控制器的故事板 ID。你可以选择任何你想要的。
3) 确保将新的视图控制器放入 peggedViewControllers
属性:
tinderNavigationController.paggedViewControllers = @[viewController1, viewController2, viewController3];