gpt4 book ai didi

iphone - 选项卡式导航 View 的正确设计模式?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:13 25 4
gpt4 key购买 nike

几天来我一直在试图解决这个问题,我承认我需要帮助。

我的应用程序的 Root View Controller 是一个标签栏 Controller 。我想让每个标签栏都有一个不同的导航 Controller 。这些导航 Controller 具有完全不同的行为。

那么我该如何根据类进行设置呢?根据 Apple 的文档,我不应该继承 UINavigationViewController。那么我应该把驱动这些导航 Controller 的代码放在哪里呢?这一切都被扔进 App Delegate 了吗?那会造成不可能的困惑。

此应用程序应在 iOS 4.0 或更高版本上运行。 (实际上,我可能需要 iOS 4.2。)

最佳答案

这是取 self 的一个应用程序。正如您所说,您不应该将 UINavigationController 子类化,而是按原样使用它们并在 UINavigationController 的 上添加 viewcontroller。然后在每个 UINavigationController 中设置 Root View Controller 之后,将 UINavigationController 添加到 UITabBarController(呸!)。

因此每个选项卡都将“指向”一个 UINavigationController,它有一个常规 View Controller 作为 Root View Controller ,当按下一个选项卡时将显示 Root View Controller (您添加的那个)顶部有一个(可选的)导航栏。

    UITabBarController *tvc = [[UITabBarController alloc] init];
self.tabBarController = tvc;
[tvc release];

// Instantiates three view-controllers which will be attached to the tabbar.
// Each view-controller is attached as rootviewcontroller in a navigationcontroller.

MainScreenViewController *vc1 = [[MainScreenViewController alloc] init];
PracticalMainViewController *vc2 = [[PracticalMainViewController alloc] init];
ExerciseViewController *vc3 = [[ExerciseViewController alloc] init];

UINavigationController *nvc1 = [[UINavigationController alloc] initWithRootViewController:vc1];
UINavigationController *nvc2 = [[UINavigationController alloc] initWithRootViewController:vc2];
UINavigationController *nvc3 = [[UINavigationController alloc] initWithRootViewController:vc3];

[vc1 release];
[vc2 release];
[vc3 release];

nvc1.navigationBar.barStyle = UIBarStyleBlack;
nvc2.navigationBar.barStyle = UIBarStyleBlack;
nvc3.navigationBar.barStyle = UIBarStyleBlack;

NSArray *controllers = [[NSArray alloc] initWithObjects:nvc1, nvc2, nvc3, nil];

[nvc1 release];
[nvc2 release];
[nvc3 release];

self.tabBarController.viewControllers = controllers;

[controllers release];

这就是我从一个 View Controller 转到另一个 View Controller 的方式(这是通过点击表格 View 中的一个单元格来完成的,但如您所见,可以在任何需要的地方使用 pushViewController 方法)。

(这是从应用程序的另一部分获取的)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.detailedAnswerViewController == nil) {
TestAnsweredViewController *vc = [[TestAnsweredViewController alloc] init];
self.detailedAnswerViewController = vc;
[vc release];
}

[self.navigationController pushViewController:self.detailedAnswerViewController animated:YES];
}

self.navigationcontroller 属性当然是在每个推送到 UINavigationController 层次结构的 View Controller 上设置的。

关于iphone - 选项卡式导航 View 的正确设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600956/

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