2011-04-20 68 views
2

我遇到了問題。我嘗試使用基於導航的應用程序創建項目。
當我按rightBarButtonItem推到下一個視圖。
並且該視圖在UINavigationBar上獲得了UISegmentedControl權限。
enter image description here關於UISegmentedControl和UINavigationController的問題

我用一個IBAction爲當按下按鈕:

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

當第一個視圖展現出來,我按下按鈕它會返回主視圖。
如果我在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]; 
} 

}

請問什麼錯?
提前感謝。

迷你

回答

3

我認爲seg_view的的viewController已被推到navigationController的堆棧,self.navigationController上seg_view - 控制器然後返回你的navigationController。但是,從其他viewControllers AView/BView添加子視圖時,這些UIViewControllers與seg_view的Controller或navigationController本身沒有任何關聯。這意味着新AView/BView中的self.navigationController是零!根據你的實現,backButtonPressed不會被調用,或者AView中的popViewController或BView不做任何事情,因爲它們沒有navigationController。我建議你要麼不使用其他viewControllers(將2個視圖放在與seg_view相同的nib中並將它們交換)或將它們推送到navigationController的堆棧上。

相關問題