1

在我的程序中有 6 个视图控制器。(在故事板中)让我们定义 1、2、3、4、5、6。

1是我的主要观点。

我想像这样导航(下图)。有可能吗?给我一个想法来做这个导航。

在此处输入图像描述

4

3 回答 3

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];
于 2013-11-05T11:27:09.273 回答
1

是的,你可以实现这一点。这是在 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];
于 2013-11-05T11:27:36.593 回答
0

使用UINavigationController。它也不是圆形的。可以假设为堆叠的方法。这就是导航控制器所做的

为你必读

于 2013-11-05T11:19:38.397 回答