gpt4 book ai didi

ios - 在按钮操作上实例化 UINavigationController

转载 作者:行者123 更新时间:2023-11-28 22:14:11 25 4
gpt4 key购买 nike

我有一个只有一个主视图的简单应用程序,它有“设置”按钮,并且设置是树状分组的,所以我想在导航 Controller 中显示它们。而且我不希望主视图中有 navigationController,因为我不希望那里有导航栏。

这就是为什么我不在 application: didFinishLaunchingWithOptions: 中实例化 navigationController 的原因。当我在“设置”按钮处理程序中检查 self.navigationController 时,它返回 nil

所以我这样写:(我用的是ARC)

    - (void)doSettings
{
NSLog(@"%@", self.navigationController); // prints nothing

SettingsViewController *settingsViewController = [SettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];

UINavigationController *navigationController = [[UINavigationController alloc] init];
[self.view.window setRootViewController:navigationController];
[navigationController pushViewController:settingsViewController animated:YES];
}

虽然它推送 settingsViewController 没有动画(不知道为什么),但这是有效的。

这通常是正确的做法吗 - 在正在运行的应用程序中更改 rootViewController

如果是,当我完成设置时,我可能需要将 rootViewController 设置回当前 viewController,就像我点击“设置”之前一样?

最佳答案

我认为您想创建一个将以模态方式呈现的导航 Controller ;以下将做:

SettingsViewController* settingsViewController = [[SettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
UINavigationController *navigationController = [[UINavigationController alloc] init];
[navigationController pushViewController:settingsViewController animated:YES];
[self presentViewController: navigationController animated: YES completion:nil];

这里的 self 是您要从中触发模态视图 Controller 的 View Controller 。

由于您以模态方式呈现导航 Controller ,您可以通过访问其导航 Controller 在 settingsViewController 的代码源中关闭它:

[self.navigationController dismissViewControllerAnimated:YES completion: nil];

要回答您的问题,设置 rootViewController 不是正确的方法。通过 presentViewController 方法以模态方式呈现新的 vc。

关于ios - 在按钮操作上实例化 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155445/

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