由于某种未知的原因,我不能推动观点,我会尽力解释我能做到的最好但是我有很多复杂的观点正在进行中,这将是一个噩梦来解释但是说我有以下方法。
-(void)showDetailView{
DetailViewController *detailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}
哪个有效并将详细视图推送到堆栈,这是在我的主视图和我的主线程上。
因此在表格视图中,我有一个带有Subview的单元格,然后从另一个视图控制器获取其视图。在该视图控制器中,我有更多子视图,并说当用户单击子视图时调用方法。而这又将在mainView上调用此方法。
所以人们会相信新的观点应该被推动。并且代码运行,不会发生错误,但视图不会更改/切换。
我尝试过在视图控制器内部推送视图的各种方法。然后只需调用一个直接连接到导航控制器的方法来推送视图。
要添加的一些内容。 1.我有一个推动视图的IBAaction按钮(工作正常) 2.我假设它是因为我通过这么多的视图,但我假设如果你调用推视图控制器,它将推送你传递它的任何视图。 3.我已经检查过从主视图调用方法时self.navigationcontroller不是= null。
但是如果通过方法调用导航控制器,则调用it = null。
那么还是要恢复导航控制器的空值吗?
我有点困惑为什么我不能简单地调用方法来推送视图
由于
答案 0 :(得分:1)
确定我现在已经对它进行了分类
就我如何解决访问高级超级视图而言,我的观点是
视图superview的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];
然后主要仍保留其导航控制器,然后在主要的show detail方法中传递链接并推送新视图。
基本上,子视图的总超级视图不能高于创建它的任何地方。因此,我的单元格中的子视图永远无法通过我的mainView正确访问和运行任何东西,我可以填充,但它从未执行过它应该如何。因此,访问其最高级别的超级视图,然后在单元格位于我的主视图中时访问其超级视图,然后我可以正确运行方法。
希望这只有理解我的头脑。
感谢 - > How does one access a super's view controller?
对于Id标记位,不以这种方式使用Id,因此学习了另外的东西
答案 1 :(得分:1)
我今天遇到了几乎相同的问题。如果在推送视图时隐藏了导航栏,则可能是零导航控制器。我解决了这个问题:
self.navigationController.navigationBarHidden = NO; // So the navigation controller is not nil
[self.navigationController pushViewController:articleInfoController animated:YES];