Objective c 在Xcode 4中,使用按钮切换视图时如何保持底部选项卡栏
我的应用程序项目基本上有5个页面视图,每个页面视图都通过底部的选项卡栏链接,当我从一个页面切换到另一个页面时,这5个页面的选项卡栏都在页面上,并且工作正常 这5个页面中的两个(制表符)页面就像一个索引,我有指向辅助页面的按钮链接。当我对按钮进行编程以转到辅助页面时,链接工作正常,但这些页面底部的选项卡栏不再存在。每个辅助页面都有一个返回按钮,可以返回到它们链接出的索引页面,但我链接出时的选项卡栏现在也不见了 作为一个实验,为了排除次页面是按钮点击后缺少选项卡栏的问题,我将其中一个选项卡链接到一个次页面,该实验非常有效 下面是我用来链接“外出”按钮的代码: 在类页面tabIndex.h中:Objective c 在Xcode 4中,使用按钮切换视图时如何保持底部选项卡栏,objective-c,xcode4,uibutton,uitabbarcontroller,ibaction,Objective C,Xcode4,Uibutton,Uitabbarcontroller,Ibaction,我的应用程序项目基本上有5个页面视图,每个页面视图都通过底部的选项卡栏链接,当我从一个页面切换到另一个页面时,这5个页面的选项卡栏都在页面上,并且工作正常 这5个页面中的两个(制表符)页面就像一个索引,我有指向辅助页面的按钮链接。当我对按钮进行编程以转到辅助页面时,链接工作正常,但这些页面底部的选项卡栏不再存在。每个辅助页面都有一个返回按钮,可以返回到它们链接出的索引页面,但我链接出时的选项卡栏现在也不见了 作为一个实验,为了排除次页面是按钮点击后缺少选项卡栏的问题,我将其中一个选项卡链接到一个
//I declared this method after the last "}"
-(IBAction)switchView:(id)sender;
在类页面tabIndex.m中:
-(IBAction)switchView:(id)sender {
MyNewPageViewController *newPagelink = [[MyNewPageViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:newPageLink animated:YES];
[newPagelink release];}
然后,我颠倒了名称,并在MyNewPageViewController的相应.h和.m文件中为后退按钮做了相同的操作,并调用iAction以返回“switchBack”
我希望有人能帮我解决这个问题
非常感谢,
--Rob听起来您最好将导航控制器与选项卡栏控制器结合使用。将导航控制器与选项卡栏控制器一起使用将使您能够为每个选项卡呈现分层组织的多个视图,同时保持选项卡栏始终可见 当您想转到给定控制器的辅助页面时,可以使用
-pushViewController:animated:
将新控制器推送到导航堆栈上;要返回到第一个控制器,只需-popViewControllerAnimated:
。每个选项卡都有一个导航视图控制器,可以有多个视图,主视图的视图控制器作为导航控制器的根视图控制器
查看控制器编程指南中提供了有关的完整详细信息。听起来您有5个视图控制器,其中2个视图控制器需要使用导航控制器。对于那些vc,您仍然希望看到选项卡栏,但需要能够在其上推送和弹出其他视图。这很容易。下面是设置tab car控制器的方法——假设前两个视图控制器是您需要将其他视图推送到的视图控制器:
MyVC1 *vc1= [[MyVC1 alloc] initWithNibName:@"MyVC1View" bundle:nil];
MyVC2 *vc2= [[MyVC1 alloc] initWithNibName:@"MyVC2View" bundle:nil];
MyVC3 *vc3= [[MyVC1 alloc] initWithNibName:@"MyVC3View" bundle:nil];
MyVC4 *vc4= [[MyVC1 alloc] initWithNibName:@"MyVC4View" bundle:nil];
MyVC5 *vc5= [[MyVC1 alloc] initWithNibName:@"MyVC5View" bundle:nil];
// these are the VCs you need to push/pop from
UINavigationController *firstNavController = [[UINavigationController alloc] initWithRootViewController:vc1];
UINavigationController *secondNavController = [[UINavigationController alloc] initWithRootViewController:vc2];
UITabBarController *tabBar = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
tabBar.viewControllers = [NSArray arrayWithObjects:firstNavController, secondNavController, vc3, vc4, vc5, nil];
例如,现在使用vc1和vc2,您可以像平常一样将视图推送到导航堆栈上
[self.navigationController pushview控制器:vc1B动画:是]代码>