我有一个应用程序,其中我有一个表格视图。当按下单元格上的按钮时,我必须转到另一个视图控制器(即:testviewcontroller)显示我在上一个选择的内容。然后按下一个按钮我需要去另一个视图控制器显示剩余的值。如果他选择一个然后我需要重复上面的过程。问题是从这里我也携带一些值到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]
是我想要的视图控制器。
任何人都可以知道我怎样才能避免再次推送同一个视图控制器?
答案 0 :(得分:19)
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])
答案 1 :(得分:0)
根据您的情况,可以弹回并使用新内容重新加载表..无需推送到新实例
对表
的数据源使用单独的数组从数据源数组中删除所选项
然后在重新加载内容时推送到下一个视图
快乐编码:)
答案 2 :(得分: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];
}