我有一个在XCode中使用“基于导航的应用程序”模板的应用程序。
现在我想更改它,以便加载的第一个视图是常规(自定义)UIView,如果用户单击特定按钮,我将原始RootViewController推送到NavigationController。
据我所知,有人用我的RootViewController调用它:
- (id)initWithRootViewController:(UIViewController *)rootViewController
我想知道如何用我的新类替换参数。
答案 0 :(得分:23)
如果要替换导航堆栈的根视图控制器,可以将其视图控制器数组的第一个对象替换为 -
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]];
NewViewController *nvc = [[NewViewController alloc] init];
[viewControllers replaceObjectAtIndex:0 withObject:nvc];
[self.navigationController setViewControllers:viewControllers];
答案 1 :(得分:5)
^这些都是以编程方式执行此操作的方法。这很酷。但我在Xcode中使用界面构建器和故事板,因此这是添加新视图控制器的简单快捷的方法:
多田!享受新的根视图控制器,而无需通过编程创建来保持您的一天。
答案 2 :(得分:2)
查看主应用程序委托.m文件并找到方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
里面会是这样的一行
self.window.rootViewController = self.navigationController;
您可以在那里实例化一个不同的视图控制器并将其指定为rootViewController