【问题标题】:Programming tableviews segue drill down编程 tableviews segue 向下钻取
【发布时间】:2013-07-16 16:02:54
【问题描述】:

我目前正在尝试将我的应用程序转换为 Storyboard。我的数据当前存储在一个 plist 文件中,我可以在我当前的 didSelectRowAtIndexPath: 方法中使用以下代码非常轻松地深入查看我的表视图:

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

{
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
NSArray *children = [dictionary objectForKey:@"Children"];

[tableView deselectRowAtIndexPath:indexPath animated:YES];

if ([children count] == 0)

{
    NSString *tempString1 = [dictionary valueForKeyPath:@"Movie"];
    NSString *tempString2 = [dictionary valueForKeyPath:@"Text"];
    NSString *tempString3 = [dictionary valueForKeyPath:@"Diagram"];

    DetailsVC *dvc = [[DetailsVC alloc] initWithNibName:@"DetailsVC" bundle:nil];

    dvc.movie = tempString1;
    dvc.pdfdesc = tempString2;
    dvc.pdfDiagram = tempString3;
    dvc.navigationItem.title = [dictionary valueForKeyPath:@"Title"];
  [self.navigationController pushViewController:dvc animated:YES];

}
else

{

    LevelsVC *lvc = [[LevelsVC alloc] initWithNibName:@"LevelsVC" bundle:[NSBundle mainBundle]];

    lvc.currentLevel += 1;
    lvc.navigationItem.title = [dictionary valueForKeyPath:@"Title"];
    [self.navigationController pushViewController:lvc animated:YES];

    lvc.tableDataSource = children;

    }

我的问题是:我究竟如何转换这种方法以用于 Segue 和 Storyboard?我可以轻松地为detailViews 创建一个segue,网上有一百万个教程,但我根本不知道如何深入查看我的tableview 中的数据。

任何帮助或示例代码将不胜感激!

【问题讨论】:

    标签: ios uitableview plist uistoryboard segue


    【解决方案1】:

    您可以使用-performSegueWithIdentifier:sender: 以编程方式从一个视图控制器转换到另一个视图控制器。只需将配置 dvc 的代码移至您的 -prepareForSegue:sender: 实现即可。

    另一种选择是将情节提要中的 segue 从表格中的一个单元格连接到下一个视图控制器。这将导致在选择行后立即触发 segue,从而使您完全不必以编程方式启动 segue。在这种情况下,您只需实现-prepareForSegue:sender: 以在segue 的目标视图控制器中设置任何必要的数据。 sender 参数将是被点击的表格单元格,您可以使用它来查找选定的行。

    【讨论】:

    • 应该是 'performSegueWithIdentifier:sender:'
    • @Rick 不错。固定。
    • @Caleb - dvc 代码不是我坚持的那个,它是 LVC 代码。我不知道如何连接 tableview 以便下一组数据向下钻取。例如,我想去 tabledata1 > tabledata2 > tabledata3 > DetailViewController。你能详细说明如何做到这一点吗?非常感谢您的耐心等待!
    • 同样的想法——用-performSegueWithIdentifier:sender:替换你的-initWithNibName:...调用并将配置代码移动到-prepareForSegue:sender:。前者启动 segue 并创建新的视图控制器,后者让您有机会在新控制器的视图变得可见之前对其进行配置。
    • 好的@Caleb。我会带着完整的报告回来。感谢一百万试图提供帮助。我想我让这一切变得比它需要的复杂得多。当我查看代码时,我通常会明白 - 我仍在努力从概念上理解事物。如果我明白了,我会为所有人发布一个完整的帖子。我敢肯定,我不会是唯一遇到这种情况的人!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多