Xcode 4.2 iOS 5:来自UITableView的多个segue

use*_*673 10 xcode ios5 uistoryboard uistoryboardsegue

我现在开始使用Xcode for 4.2 for iOS5,并且有一些变化,我现在正在解决一个我无法找到解决方法的问题.

我正在用UITablwView做一个例子,它以2个部分编程填充,第1部分只有1行,第2部分有3行.

我的目标是从表中选择一行,并根据该行,用户将被重定向到不同的视图.

例如:选择第0行第0行,app推送查看1 - 名称设置//选择第1行第0行,app推送查看3 - 地址设置

旧方式,这很简单,只需要用initWithNibName初始化一个UIViewController,然后推送视图.

现在随着storyBoard一切都发生了变化,或者至少我认为它发生了变化,因为我无法看到如何获得相同的结果,因为我无法将tableView中的多个segue设置为不同的UIViewControllers ...并且做旧的时尚方式我无法看到我可以从storyBoard上的视图中获取NIB名称以初始化UIViewController来推送.

有没有人知道如何得到这个结果?

Mar*_*rco 25

在源视图控制器的故事板中定义两个"通用"segue(例如,标识为"segue1"和"segue2"),一个到每个目标视图控制器.这些segue不会与任何行动相关联.

然后,有条件地执行你的segues UITableViewDelegate:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Conditionally perform segues, here is an example:
    if (indexPath.row == 0)
    {
        [self performSegueWithIdentifier:@"segue1" sender:self];
    }
    else
    {
        [self performSegueWithIdentifier:@"segue2" sender:self];
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 很棒的回复.也适合我.应该接受为答案. (2认同)

小智 16

我和你有同样的问题.问题是您无法将tableViewCell链接到多个视图控制器.但是,您可以将源视图本身链接到多个视图控制器.

  1. 控制 - 将主视图控制器(而不是表视图单元格)从场景查看器拖动到要链接的任何视图控制器.你可以随心所欲地做到这一点.请注意,源视图控制器场景中显示的segue应该类似于"从Root View Controller推送Segue ..."而不是"从NavCell推送Segue到......".

  2. 识别每个segue链接的唯一名称,如"toDetailView1"

  3. 最后,在源视图控制器中自定义选择:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (indexPath.row % 2 == 1) {
            [self performSegueWithIdentifier:@"toDetailView1" sender:self];
        } else {
            [self performSegueWithIdentifier:@"toDetailView2" sender:self];
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)