gpt4 book ai didi

objective-c - Storyboard将 NavController 的 rootViewController 设置为 tableView 但在应用程序启动时显示其他 View

转载 作者:可可西里 更新时间:2023-11-01 03:37:21 26 4
gpt4 key购买 nike

我有一个基本的导航堆栈:NavController->UITableViewController(作为 NavController 中的 rootViewController)-> 菜单项,主要选项是自定义 viewController。我希望我的应用程序以主自定义 View Controller 作为 navigationController 堆栈上的当前 View 启动,并使用后退按钮转到主菜单。有没有什么方法可以使用 Storyboard以这种方式设置堆栈,但在启动时首先显示自定义 View ?

我正在尝试尽可能多地在 Storyboard 中做到这一点。我知道我可以进入 appDelegate 和 appDidFinishLaunching...将自定义 viewController 插入 navController 但这看起来很糟糕,因为在我的 appDelegate 中我必须引用 navController 和自定义 viewController。

最佳答案

不幸的是,UIStoryboard 无法以可视方式操作 UINavigationController 层次结构。在您的情况下,您需要在应用程序委托(delegate)中以编程方式建立层次结构。幸运的是,因为您正在制作 Storyboard,您的应用委托(delegate)已经包含对此导航 Controller 的引用。

在制作 Storyboard时,所谓的“初始 View Controller ”将在 -applicationDidFinishLaunchingWithOptions 时连接到 UIWindow 应用程序实例上的 rootViewController 属性: 收到消息。

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)options
{
UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
MenuViewController *menu = [navController.storyboard instantiateViewControllerWithIdentifier:@"MenuController"];
CustomViewController *custom = [navController.storyboard instantiateViewControllerWithIdentifier:@"CustomController"];

// First item in array is bottom of stack, last item is top.
navController.viewControllers = [NSArray arrayWithObjects:menu, custom, nil];

[self.window makeKeyAndVisible];

return YES;
}

我知道这并不理想,但如果您想留在 Storyboard的土地上,恐怕这是唯一的方法。

关于objective-c - Storyboard将 NavController 的 rootViewController 设置为 tableView 但在应用程序启动时显示其他 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com