2012-02-13 16 views
1

私はiPhoneアプリを構築しています。 メインビューコントローラーは2つのビュー(分割画面など)で構成されています。 最初にの表示があり、ボタンがあります。タップで、のUITableView( ResultTableViewController)が(上記の) 2番目のビューに表示されます。サブビューから呼び出されたときに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]; 
    } 
} 

だから私はUIViewののサブビューとしてのUITableViewを持っています。

ResultTableViewControllerのdidSelectRowAtIndexPath()のpushViewController()が機能しないという問題があります(self.navigationControllerはnilです)。

- (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には、対応するIBOulet(結果)とビューを接続したResultsTableViewControllerがあります。 – George

+0

@Andy Riordan - UINavigationControllerの作成方法と場所を表示できますか?それはXIBまたは明示的なコードですか? – mobibob

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

navigationcontrollerスタックにdetailviewをプッシュします。あなたのtableviewcontrollerがそのスタックにあるかどうか確認してください。

関連する問題