1

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

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

4

5 回答 5

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];
    }
}
于 2013-11-13T11:16:32.667 回答
2

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

于 2013-11-13T11:17:02.073 回答
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;
于 2013-11-13T11:19:23.230 回答
0

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

但要小心,如果您没有实现等待前一个 segue 的方法,如果在完成解除/推送另一个控制器之前将新控制器推送到详细视图上,您​​可能会收到“不平衡调用”错误。双击表格中的单元格即可。

于 2014-03-22T02:01:51.317 回答
0

使用此代码:

UINavigationController *detailNavigationController =[[[self splitViewController] viewControllers] objectAtIndex:1];                
  [detailNavigationController pushViewController:"your_view_controller" animated:YES];
于 2014-01-05T10:07:11.913 回答