3

我有一个应用程序,其中我有一个表格视图。当按下单元格上的按钮时,我必须转到另一个视图控制器(即:testviewcontroller),显示我在前一个中选择的内容。然后按下一个按钮时我需要转到另一个显示剩余值的视图控制器。如果他在那里选择一个,那么我需要重复上述过程。问题是从这里我也携带一些值到那个 testviewcontroller。如果我弹回到我的视图控制器我怎么能携带新的价值观。目前我正在这样做。

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]是我想要的视图控制器。

谁能知道我怎样才能避免再次推送相同的视图控制器?

4

3 回答 3

20
for (UIViewController*vc in [self.navigationController viewControllers]) {
if ([vc isKindOfClass: [TestViewController class]]){
vc.itemselected= head ; 
[[self navigationController] popToViewController:vc animated:YES];
  }
}

*编辑* 这应该是

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

代替

for (UIViewController*vc in [self.navigationController viewControllers])
于 2012-08-15T08:31:36.957 回答
0

对于您的情况,最好弹回并用新内容重新加载表格。无需推送到新实例

使用单独的数组作为表的数据源

从数据源数组中删除所选项目

然后在弹回重新加载内容时推送到下一个视图

于 2012-08-15T08:26:21.373 回答
0

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

-(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];
}
于 2016-07-31T07:35:33.060 回答