0

由于某些未知的原因,我无法推送视图,我会尽我所能解释,但我有很多复杂的视图,解释起来将是一场噩梦,但说我有以下方法。

 -(void)showDetailView{ 
DetailViewController *detailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
 [self.navigationController pushViewController:detailView animated:YES];
 [detailView release]; 
  }

哪个有效并将详细视图推送到堆栈上,这是我的主视图和我的主线程。

所以在表格视图中我有一个带有子视图的单元格,然后从另一个视图控制器获取它的视图。在那个视图控制器中,我有更多的子视图,并说当用户单击子视图时会调用一个方法。这又会在 mainView 上调用此方法。

因此,人们会认为应该推动一种新的观点。并且代码运行,没有发生错误,但视图没有更改/切换。

我尝试了各种在视图控制器中推送视图的方法,它是从中调用的。然后只需调用一个直接连接到导航控制器的方法来推送视图。

补充几点。1. 我有一个 IBAaction 按钮,可以推送一个视图(效果很好) 2. 我假设它是因为我通过了这么多视图,但我假设如果你调用推送视图控制器,它会推送你传递的任何视图。3.我检查了从主视图self.navigationcontroller调用该方法时不 = null。

但是如果通过方法调用导航控制器调用它= null。

那么有没有办法恢复导航控制器的空值呢?

我有点困惑为什么我不能简单地调用一个方法来推送一个视图

谢谢

4

2 回答 2

1

没关系,我现在已经整理好了

就我如何解决访问上级超级视图到我的视图而言是

视图超级视图的 ID 标记,这是我的子视图所在的单元格

id CellController = [self.view.superview.superview nextResponder];
[CellController performSelector:@selector(showDetailView:) withObject:Link];

然后在我的单元格中调用一个方法,然后依次访问它的超级视图

id mainController = [self.view.superview.superview nextResponder];
[mainController performSelector:@selector(showDetailView:) withObject:Link];

然后主要仍然保留其导航控制器,然后在主要的显示详细信息方法中传递链接并推送新视图。

基本上,子视图的总超级视图不能高于创建它的任何位置。因此,我的单元格中的子视图永远无法通过我的 mainView 正确访问和运行任何东西,我可以填充但它从未执行过应有的操作。因此,访问其最高级别的超级视图,然后在单元格位于我的主视图中时访问其超级视图,然后我可以正确运行方法。

希望这只有让我明白这一切才有意义。

感谢 ->如何访问超级的视图控制器?

对于Id标签位,没有以这种方式使用Id,所以学到了另一件事

于 2010-10-19T09:31:29.360 回答
1

我今天遇到了几乎同样的问题。如果在推送视图时导航栏是隐藏的,则可能有一个 nil 导航控制器。我这样解决问题:

self.navigationController.navigationBarHidden = NO; // So the navigation controller is not nil
[self.navigationController pushViewController:articleInfoController animated:YES];
于 2011-06-11T19:38:59.127 回答