如何切换到不同的详细视图控制器?

时间:2013-11-13 11:08:06

标签: ios ipad uisplitviewcontroller segue

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

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

5 个答案:

答案 0 :(得分:2)

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];
}

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

- (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];
    }
}

答案 1 :(得分:2)

在主表视图的委托中实现tableView:didSelectRowAtIndexPath:。根据{{​​1}}参数的值,使用您选择的segue标识符调用indexPath

答案 2 :(得分:1)

// 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;

答案 3 :(得分:0)

使用此代码:

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

答案 4 :(得分:0)

在您的segue中,将您的样式设置为“推送”,将目标设置为“详细信息”。 Current将目标视图控制器推送到Master视图,而Detail将其推入“Detail”视图。就这么简单。然后用你连接其他所有东西的方式连接它。

但要小心,如果你没有实现等待前一个segue的方法,如果将一个新的Controller推到详细信息视图上,你会得到一个“不平衡的调用”错误在它完成之前解雇/推动另一个。双击表格中的单元格就可以了。