2012-02-13 76 views
1

我正在構建一個iPhone應用程序,具有以下結構: 我有MainViewController它由2個視圖(如分屏)組成。 第一個他們認爲,有一個按鈕。上抽頭,一個UITableView(ResultTableViewController)出現在視圖(上面的):從子視圖調用PushviewController不工作

-(IBAction)buttonTapped:(id)sender { 
    if ([(UIButton *)sender tag] == 0) { 
     ResultsTableViewController *childViewController = [[ResultsTableViewController alloc] init]; 
     childViewController.tableView.delegate = self.results;   
     [self.results.view addSubview:childViewController.tableView]; 
    } 
} 

所以,我有一個UITableView作爲一個UIView的子圖。

問題是,ResultTableViewController的didSelectRowAtIndexPath()中的pushViewController()不起作用(self.navigationController爲零)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    DetailsViewController *detailView = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:[NSBundle mainBundle]];  
    [self.navigationController pushViewController:self.detailView animated:YES]; 
} 

我嘗試了很多我找到的解決方案,但沒有任何效果。

在我的MainWindow.xib中,我只添加了MainViewController,是這個問題嗎?

在此先感謝!

回答

0

好的,我找到了。 我不得不聲明我的MainViewController爲UINavigationControllerDelegate,並在其中創建一個輔助NavigationController。我在我的新的navigationController中推viewController,就是這樣。

0

您正在將子控制器的視圖添加到控制器的視圖中,而不是將子控制器推到導航堆棧上。因此,您的孩子控制器的導航控制器將爲nil,因爲它未放入導航控制器。

這是你要去的嗎?

-(IBAction)buttonTapped:(id)sender { 
    if ([(UIButton *)sender tag] == 0) { 
     ResultsTableViewController *childViewController = [[ResultsTableViewController alloc] init]; 
     childViewController.tableView.delegate = self.results;   
     [self.navigationController pushViewController:childViewController animated:YES]; 
    } 
} 
+0

這似乎是正確的,但現在childView並沒有顯示出來。我想我的.xib有一些事情要做。在我的MainViewController.xib中,我有一個ResultsTableViewController,我將它與相應的IBOulet(結果)和視圖連接起來。 – George 2012-02-14 10:54:30

+0

@Andy Riordan - 你可以展示UINavigationController的創建方式和位置?它是在XIB還是顯式代碼中? – mobibob 2013-05-14 02:35:48

0
[self.navigationController pushViewController:self.detailView animated:YES]; 

上面的代碼將推動navigationcontroller堆棧中的DetailView線。檢查你的tableviewcontroller是否在那個堆棧上?

相關問題