如何选择不同的细节视图控制器?

Posted

技术标签:

【中文标题】如何选择不同的细节视图控制器?【英文标题】:How do I segue to different detail view controllers? 【发布时间】:2013-11-13 11:08:06 【问题描述】:

在拆分视图控制器应用程序中,如何在主视图控制器中选择表格行时选择不同的详细视图控制器?

为了清楚起见,当我在主视图控制器中选择一行时,我需要替换详细视图控制器。如何连接视图控制器?从拆分视图控制器?还是从详细视图导航控制器?

【问题讨论】:

【参考方案1】:

在主表视图的委托中实现tableView:didSelectRowAtIndexPath:。根据indexPath 参数的值,使用您选择的segue 标识符调用[detailViewController performSegueWithIdentifier:sender:]

【讨论】:

【参考方案2】:

在您的 tableView:didSelectRowAtIndexPath: 方法中,执行以下操作:

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

    [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];

如果您需要根据所选行执行不同的转场,请执行以下操作:

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

    NSString *segueIdentifier = nil;

    switch(indexPath.row) 
        case 0:
            segueIdentifier = @"YourSegueIdentifier";
            break;
        case 1:
            segueIdentifier = @"ADifferentSegueIdentifier";
            break;
        .
        .
        .
    

    if (segueIdentifier != nil) 
        [self performSegueWithIdentifier:segueIdentifier sender:self];
    

【讨论】:

【参考方案3】:
// Get detail navigation controller
UINavigationController *detailNavigationController = [splitViewController.viewControllers objectAtIndex:1];

// Push the detail view controller
[detailNavigationController pushViewController:anyDetailViewController animated:NO];

// You also might need to set the splitview controller's delegate to this view controller
splitViewController.delegate = anyDetailViewController;

【讨论】:

【参考方案4】:

使用此代码:

UINavigationController *detailNavigationController =[[[self splitViewController] viewControllers] objectAtIndex:1];                
  [detailNavigationController pushViewController:"your_view_controller" animated:YES];

【讨论】:

【参考方案5】:

在您的 segue 中,将您的样式设置为“Push”,并将您的目的地设置为“Detail”。 Current 会将目标视图控制器推送到您的主视图中,而 Detail 会将其推送到“详细信息”视图中。就是这么简单。然后像连接其他所有东西一样连接它。

但要小心,如果你没有实现等待前一个 segue 的方法,如果将新 Controller 推送到详细视图上,你可能会收到“Unbalanced calls”错误在它完成解雇/推动另一个之前。双击表格中的单元格即可。

【讨论】:

以上是关于如何选择不同的细节视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在选择集合视图单元格时显示不同的视图控制器

如何根据集合视图中的单元格选择来控制表格视图的内容?

如何将不同的数据从表视图传递到另一个视图控制器

将多个详细视图与拆分视图控制器一起使用

关闭模态视图控制器后呈现不同的视图控制器

如何在 Xcode 中的不同视图控制器上获取持久 iAd