0

ナビゲーション用に NavigationController を埋め込んだ 1 つの ViewController に UISegmentControl があります。その UISegmentControl には、3 つの UITableViewController を切り替える 3 つのセグメントがあります。これらの UITableViewControllers は、あるセグメントから別のセグメントに切り替えるときにサブビューに表示されます。私がやりたいのは、ユーザーがセルをタップしたとき、そのビューで同じものに対して DetailViewController を明らかにしたいということです。

UISegmentControl を切り替えるコードは次のとおりです -

-(IBAction)valueChanged:(id)sender{

 segmentControl=(UISegmentedControl*)sender;


 if (segmentControl.selectedSegmentIndex==1) {

 firstView = [self.storyboard   instantiateViewControllerWithIdentifier:@"FirstTopViewController"];

    [self.view addSubview:firstView.view];

    NSLog(@"1");
}
}

FirstTopViewController.m で -

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


DetailViewController *detailView = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];

FirstViewController *firstView = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];

detailView.detail = [self.jobsArrayFromAFNetworking objectAtIndex:indexPath.row];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:firstView];

[self.view addSubview:nav.view];

[nav pushViewController:jobDetailView animated:YES];

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

UINavigationController が表示されますが、UITableViewController と同じサブビューにあり、任意のセグメントをスクロールまたはタップしようとするとすぐにクラッシュします。どうすればナビゲーションを適切に達成できますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

あなたはほとんどそれを手に入れました、これがあなたがする必要があると私が思うことです:

あなたのメソッドでは、そのルートviewController(firstViewController)valueChangedを設定する場所です。UINavigationControllerそのようです:

FirstViewController *firstView = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:firstView];

[self.view addSubview:nav.view];

そして、次のdidSelectRowAtIndexPathようなことをします:

DetailViewController *detailView = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];

[self.navigationController pushViewController:detailView]

わかる?

編集:要点は、navController と firstViewController を最初に (セグメント化されたコントロール値が変更されたときに) 結合し、後でセルの選択時に、detailViewController を作成して既存の navController にプッシュすることです。

于 2013-07-19T20:42:41.340 に答える