如何从导航控制器中的视图控制器堆栈中获取特定的视图控制器?

问题描述:

我有一个应用程序,我有一个表view.when按下单元格上的按钮,我必须去另一个视图控制器(即:testviewcontroller)显示我在上一个选择的内容。然后当按下一个按钮我需要去另一个视图控制器显示remaing values.if他选择那里然后我需要重复上述过程。问题是从这里我也携带一些值testviewcontroller.if我回到我的视图控制器如何我可以携带新的价值吗?目前我正在这样做。如何从导航控制器中的视图控制器堆栈中获取特定的视图控制器?

TestViewController *test =[[ TestViewController alloc]initWithNibName:@"TestViewController" bundle:nil]; 


test.itemselected=head; 

test.itemid=productid; 
//NSLog(@"%@",del.navigationController); 

[del.navigationController pushViewController:test animated:YES]; 

,但我知道

NSArray *array = [del.navigationController viewControllers]; 

[array objectAtIndex:3]是我需要的视图控制器。

任何人都可以知道我怎么能避免再次推这个视图控制器?

+1

我很难理解你的问题。主要是由于你的句子结构。 – Cyprian 2012-08-15 08:26:55

+0

@Cyprian的主要事情是我希望弹出到我的视图控制器在堆栈中的一组值? – hacker 2012-08-15 08:29:36

+0

@Cyprian而不是创建新的实例我怎么才能弹出我的视图控制器的一些值 – hacker 2012-08-15 08:32:06

* 编辑 * 这应该是

for (TestViewController*vc in [self.navigationController viewControllers])

,而不是

for (UIViewController*vc in [self.navigationController viewControllers]) 
+0

如果你用你的想法编辑我的代码并放在这里,它会很好吗? – hacker 2012-08-15 08:36:43

+0

如果你对iPhone开发并不陌生,这很简单,很难理解你想要在你的问题中说些什么。 – 2012-08-15 08:39:52

+0

@bugfinder我已经编辑了答案,据我了解你的问题。 – 2012-08-15 08:42:08

对于您的情况是尤为明显,以弹回,并重新装入新contents..no表需要推到一个新的实例

使用一个单独的数组表

的数据源中删除所选项目从数据源阵列

然后推到下一个视图POP操作返回重新加载内容

快乐编码:)

+0

当我弹出我需要携带一些values.to显示there.thats问题 – hacker 2012-08-15 08:30:50

+0

然后通过appdelegate传递它...你可以创建代码中任何地方的共享实例为[uiapplication sharedApplication] Delegate] – 2012-08-15 09:01:18

可以遍历在视图控制器堆栈循环。

-(void) viewWillDisappear:(BOOL)animated { 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 

     NSMutableArray *ViewControllerArray=[[NSMutableArray alloc]init]; 
     for (long i=[self.navigationController.viewControllers count]-1;i>0; i--) { 


      [ViewControllerArray addObject:[self.navigationController.viewControllers objectAtIndex:i]]; 

      NSLog(@"%@",ViewControllerArray); 
      NSLog(@"%@",self.navigationController.viewControllers); 
     } 

     for (UIViewController *controller in self.navigationController.viewControllers) { 

      //Do not forget to import AnOldViewController.h 
      if ([controller isKindOfClass:[YourViewController class]]) { 

       [self.navigationController popToViewController:controller 
                 animated:YES]; 
       break; 
      } 
     } 



    } 
    [super viewWillDisappear:animated]; 
}