0

好的,所以我有一个 UITableViewController。在其中我定义了动态 tableviewcell。现在为了简单起见,假设定义了三个动态行。看截图

在此处输入图像描述

所以我想要做的是当用户触摸

  • 第 1 行,我想把它们带到 viewcontroller1
  • 第 2 行,我想把它们带到 viewcontroller2
  • 第 3 行,我想带他们去 viewcontroller3

现在这是两难的部分,当我选择原型单元并使用模式将其连接到 viewcontroller1 时,从那时起,我触摸的任何行都会将我带到 viewcontroller1。我想为我的 UITableViewController 编写这段代码,但我不知道如何创建多个圣人?(见下文)

现在很可能这是故事板和 UITableView 的限制,并且不能使用动态单元格来完成。我要做的是创建静态单元格并手动将每一行连接到相应的视图控制器。我只是想知道是否有更简单的方法,因为我有 50 行并且每行都需要连接到一个新的视图控制器。是的,我非常喜欢在故事板中连接东西。如果有更好的方法,只是想获得第二意见。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Navigation logic may go here. Create and push another view controller.

        //SECTION #0
        if (indexPath.section == 0)
        {
            [self performSegueWithIdentifier:@"goto1" sender:nil];

        }

    //SECTION #1
        if (indexPath.section == 1)
        {
            [self performSegueWithIdentifier:@"goto2" sender:nil];

        }

    //SECTION #2
        if (indexPath.section == 2)
        {
            [self performSegueWithIdentifier:@"goto3" sender:nil];

        }

}
4

2 回答 2

2

也可以从控制器工具栏中的黄色控制器图标中拖动 segue。选择您的表格视图控制器,将显示如下图所示的黑色工具栏。

控制器工具栏

从黄色图标拖动到所需的目标控制器。

这样,segue 就不会直接附加到单元格或其他任何东西上。给它一个标识符,您可以随时在代码中执行它。

在您的情况下,您可以根据您认为合适的任何逻辑进行performSegueWithIdentifier:sender:调用。tableView:didSelectRowAtIndexPath:

[编辑]:

“如果有更好的方法,只是想获得第二意见。”

50 个不同的转场和目的地似乎很多。你确定你不能重用单个(或至少少于 50 个)视图控制器(比如只有内容不同时?)。例如,您显示 50 个包含内容的相似页面。而不是在故事板中创建 50 个视图控制器:创建一个并在显示之前设置视图控制器的内容:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    MyPageController *page = (MyPageController *)segue.destinationViewController;
    // get content for selected row
    page.content = myContentModelObject;
}
于 2013-01-18T16:27:00.137 回答
0

只能通过在情节提要中拖出线条来创建转场。创建它们后,您可以自定义它们,但是如果您必须首先将它们全部绘制出来,那并没有多大用处。

为了节省您绘制所有这些线条(并调试它们......),您无需使用情节提要即可轻松完成 Segue 的工作。对于模态转场:

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString* identifier = [NSString stringWithFormat:@"%d",indexPath.row];
    RWViewController* detailView = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
    [self presentViewController:detailView animated:YES completion:nil];
}

您仍然可以在情节提要中创建 50 个 ViewController。给每个人一个与相应的 indexpath.row 匹配的数字标识符

没有可以画的线...

如果故事板在 50 个视图控制器时变得不堪重负,请考虑为每个视图控制器使用单独的 xib(或者您可以拆分几个不同的故事板,并将它们分组排列)。

于 2013-01-18T16:38:50.430 回答