关于UISegmentedControl和UINavigationController的问题

时间:2011-04-20 08:51:37

标签: iphone xcode uinavigationcontroller uisegmentedcontrol

我遇到了问题。我尝试使用基于导航的应用程序创建项目 当我按下rightBarButtonItem按下到下一个视图 并且该视图在UINavigationBar上获得了UISegmentedControl enter image description here

按下按钮A时使用IBAction:

-(IBAction)backButtonPressed:(id)sender{
[self.navigationController popViewControllerAnimated:YES];}

当第一个视图显示时,我按下按钮A它将返回主视图 如果我在UISegmentedControl上按数字2,它将转到另一个视图,
并且仍然是相同的方法( - (IBAction)backButtonPressed:(id)sender)。
但是当我按下按钮B时,它不会回到主视图..
enter image description here

以下是关于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];
}

}

有什么不对吗? 预先感谢。

迷你

1 个答案:

答案 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的堆栈上。