在我的程序中有 6 个视图控制器。(在故事板中)让我们定义 1、2、3、4、5、6。
1是我的主要观点。
我想像这样导航(下图)。有可能吗?给我一个想法来做这个导航。
在我的程序中有 6 个视图控制器。(在故事板中)让我们定义 1、2、3、4、5、6。
1是我的主要观点。
我想像这样导航(下图)。有可能吗?给我一个想法来做这个导航。
首先你创建一个导航控制器对象
UINavigationController *navCtrl = [[UINavigationController alloc]initWithRootViewController:rootViewController];
self.window.rootViewController = navCtrl;
如果你想去 1->2,1->3,1->6 等,为下一个视图控制器创建一个对象并将其推送到导航堆栈
[self.navigationController pushViewController:second animated:YES];
你不需要做任何额外的工作来回到之前的视图控制器。默认的后退按钮可让您返回。
如果您需要返回根视图控制器,请使用以下命令:
[self.navigationController popToRootViewControllerAnimated:YES];
如果你想返回到任何特定的视图控制器,然后使用这个
[self.navigationController popToViewController:viewController animated:YES];
是的,你可以实现这一点。这是在 iOS 中使用 NavigationController 进行的简单导航。你有六个 viewController 1、2、3、4、5、6。
为此:首先创建一个 NavigationController 并使用 ViewController 1(即根 View Controller)对其进行初始化。
现在您的 navigationController 的行为就像一个堆栈,其中包含所有您推送的视图控制器。NavigationController 只是推送和弹出您的视图控制器。
所以,每次当你想导航时,首先检查你的 viewController 是否在 navigationController 堆栈中。如果它已经在堆栈中,则弹出到该控制器,如果没有,则推送相同的视图控制器。为此用途如下:
如果是 ViewController3
-(void)popToSelectedViewController
{
NSArray *vc=[self.navigationController viewControllers];
ViewController3 *vc3=nil;
for (int i=0; i<[vc count]; i++)
{
UIViewController *tempVC=[vc objectAtIndex:i];
if([tempVC isKindOfClass:[ViewController3 class]])
{
vc=[vc objectAtIndex:i];
break;
}
}
if(vc3)
{
//If exists inside stack the pop
[self.navigationController popToViewController:vc3 animated:YES];
}
else
{
//If not exists inside stack push ViewController3
ViewController3 *vc3New= [[ViewController3 alloc]initWithNibName:@"ViewController3" bundle:nil];
[self.navigationController pushViewController:vc3New animated:YES];
[vc3New release];
}
}
用 navigationController 初始化你的 ViewController1:
如果使用情节 提要嵌入你的initialViewController(即viewController3)和UINavigationController。为了这:
Step1:打开storyboard,选择你的initialViewController(即viewController3)。
Step2:进入菜单中的Editor -> 选择Embed In -> 选择UINavigationController。这将创建一个导航控制器并将 viewController3 初始化为 rootViewController。
如果不使用 .h 中的 vc3 (ViewController3) 和 applicationNavigationController (UINavigationController) 的故事板制作属性
并以 .m 为单位:
在 appDelegate 中获取方法“application... didFinishedLaunching ....”并写入:
self.vc3=[[ViewController3 alloc]initWithNibName:@"ViewController3" bundle:nil];
self.applicationNavigationController=[[UINavigationController alloc] initWithRootViewController:self.vc3];
self.window.rootViewController=self.applicationNavigationController;
[self.window makeKeyAndVisible];
使用UINavigationController
。它也不是圆形的。可以假设为堆叠的方法。这就是导航控制器所做的