我遇到了问题。我尝试使用基于导航的应用程序创建项目 当我按下rightBarButtonItem按下到下一个视图 并且该视图在UINavigationBar上获得了UISegmentedControl
按下按钮A时使用IBAction:
-(IBAction)backButtonPressed:(id)sender{
[self.navigationController popViewControllerAnimated:YES];}
当第一个视图显示时,我按下按钮A它将返回主视图
如果我在UISegmentedControl上按数字2,它将转到另一个视图,
并且仍然是相同的方法( - (IBAction)backButtonPressed:(id)sender)。
但是当我按下按钮B时,它不会回到主视图..
以下是关于UISegmentedControl的方法:
-(void)showSegmentedView:(id)sender{
AView *aView = [[AView alloc] initWithNibName:@"AView" bundle:nil];
BView *bView = [[BView alloc] initWithNibName:@"BView" bundle:nil];
if(seg.selectedSegmentIndex ==0) {
[[seg_view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[seg_view addSubview:aView.view];
}
else if(seg.selectedSegmentIndex ==1){
[[seg_view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[seg_view addSubview:bView.view];
}
}
有什么不对吗? 预先感谢。
迷你
答案 0 :(得分:3)
我假设seg_view的viewController已被推送到navigationController的堆栈,seg_view-Controller上的self.navigationController然后返回你的navigationController。但是,当从其他viewControllers AView / BView向其添加子视图时,那些UIViewControllers与seg_view的Controller或navigationController本身没有任何关联。这意味着新的AView / BView里面的self.navigationController是零!根据您的实现,无法调用backButtonPressed或AView中的popViewController或BView不执行任何操作,因为它们没有navigationController。我建议您不要使用其他viewControllers(将2个视图放在与seg_view相同的nib中并交换它们)或将它们推送到navigationController的堆栈上。