0

我在一个 ViewController 中有 UISegmentControl,我在其中嵌入了一个 NavigationController 用于导航。在那个 UISegmentControl 中,我有三个 3 段,我在三个 UITableViewController 之间切换。这些 UITableViewController 在从一个段切换到另一个段时显示在子视图中。我想要做的是当用户点击一个单元格时,我想在该视图中显示 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

你几乎明白了,这就是我认为你需要做的事情:

在您的valueChanged方法中是您设置UINavigationController及其根视图控制器(firstViewController)的位置。像这样:

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 回答