gpt4 book ai didi

iphone - iOS5自定义标签栏

转载 作者:行者123 更新时间:2023-11-29 04:40:37 24 4
gpt4 key购买 nike

我是 iPhone 新手,我已经启动了一个应用程序,其中添加了一个自定义选项卡栏,该选项卡栏只能加载到某个特定页面。标签栏按照我的预期工作。现在的问题是,当我导航到其他页面时,选项卡栏不断显示,这给我带来了严重的问题......这是我的实现

在.h中:

#import <UIKit/UIKit.h>
@class MainMenuViewController;

@interface RoutineListViewController : UIViewController<UITabBarDelegate>{
MainMenuViewController *homeBtn;

UITabBar *mainTabBar;
UIViewController *routineTabViewController;
UIViewController *calendarTaViewController;
UIViewController *editTabViewController;
}

@property (nonatomic, retain) IBOutlet UITabBar *mainTabBar;
@property (nonatomic, retain) IBOutlet UIViewController *routineTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *calendarTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *editTabViewController;

- (IBAction)goToHome:(id)sender;

@end

在 .m 中,我将选项卡实现为:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
switch (item.tag) {
case 1:
if (routineTabViewController == nil) {
self.routineTabViewController =[[RoutineListViewController alloc] initWithNibName:@"RoutineListViewController" bundle:nil];
[self.view insertSubview:routineTabViewController.view belowSubview:mainTabBar];
routineTabViewController = nil;
[routineTabViewController release];
}

break;
case 2:
if (calendarTabViewController == nil) {
self.calendarTabViewController =[[CalendarTabViewController alloc] initWithNibName:@"CalendarTabViewController" bundle:nil];
[self.view insertSubview:calendarTabViewController.view belowSubview:mainTabBar];
calendarTabViewController = nil;
[calendarTabViewController release];
}

break;
case 3:
if (editTabViewController == nil) {
self.editTabViewController =[[EditTabViewController alloc] initWithNibName:@"EditTabViewController" bundle:nil];
[self.view insertSubview:editTabViewController.view belowSubview:mainTabBar];
editTabViewController = nil;
[editTabViewController release];
}

break;
default:
break;
}
}

当我实现一个按钮来转到其他页面时,选项卡栏不断显示。这是 EditTabViewController.m 文件中的按钮实现。

- (IBAction)goToHome:(id)sender {
homeBtn = [[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil];
[self.view addSubview:homeBtn.view];
}

最佳答案

根据 Apple 的规则,TabBarController应该作为主容器。另外,如果您只是实现自定义 UITabBar,您是否使用它来将用户推送到其他 View ?如果是这样,如果 UITabBar 消失,用户如何返回?

如果您只希望在特定页面可见时栏可见,为什么不实现 UINavigationController (作为主容器)并让根 UIViewController 实现 UIToolbar 执行相同的功能。然后,当您导航到另一个页面时(我假设您指的是一个新屏幕,而不是 UIPageControl 中的不同页面或 UIWebView 中的网页) ,您插入一个不包含 UIToolbar 的新 UIViewController

有点像这样:

--UINavigationController
|
-->UIViewController as RootViewController --> Contains UIToolbar
|
-->Pushes UIViewController --> Has no UIToolbar

编辑/更新

我刚刚看到你的代码,我不确定我是否理解你想要实现的目标。我认为您可能会尝试以某种方式实现类似于 UINavigationController 的行为,但实际上并不使用它。


编辑/更新#2我认为您想要可以像这样实现的行为:

UINavigationController (containing IconMenuViewController as RootViewController)
|
--> PageViewController (push into this from any icon touch in IconMenuViewController)
--> Contains UIToolbar/UITabBar

如果您使用上面的层次结构,UINavigationController 将自动为您提供屏幕顶部的 NavigationBar 并提供后退按钮。只要您将 UIToolbarUITabBar 设为 PageViewController 的一部分,当您推送和弹出它时,它应该随其 View Controller 一起出现和消失。这有意义吗?

关于iphone - iOS5自定义标签栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448278/

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