2

嗨,我在情节提要中使用表格视图创建了一个应用程序,到目前为止,我能够填充表格,我将其设置为制作 4 个单元格并从每个单元格推送到同一个视图控制器,但我想要做的是每个单元将我带到一个新的视图控制器

这是我到目前为止所拥有的,如果你能指出我如何能够做到这一点的正确方向,那就太好了

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([[segue identifier] isEqualToString:@"ShowSimpleDetails"]) {
    SimpleTutorialsViewController *detailViewController = [segue destinationViewController];

    NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];

    int row = [myIndexPath row];
    detailViewController.simpleDetailModal = @[_simpleTitle[row], _simpleDescription[row], _simpleImages[row]];
   }
}
4

3 回答 3

4

您可以在故事板或代码中执行此操作:

在故事板中

您可以从单元格中绘制一个 segue 到目标视图控制器,并在属性检查器中为该 segue 提供一个唯一标识符。您可以通过拥有多个单元原型使用它来转接多个目的地,每个原型都有自己的转接。

在代码中

要在代码中执行此操作,您将从视图控制器(而不是单元格)向每个目的地绘制一个 segue,并为每个 segue 提供一个唯一标识符。然后在 中didSelectRowAtIndexPath,您将根据所选的索引路径决定您想要的目的地并执行 segue 之类的

NSString *segueIdentifier = @"someIdentifier";//or whatever logic you need to determined the appropriate identifier
id sender = self;//or whatever object you want to be the sender
[self performSegueWithIdentifier:segueIdentifier sender:sender];

prepareForSegue

prepareForSegue中,每个可能的 segue 标识符都有一个条件块:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"oneSegueIdentifier"]) {
        //preparation
    } else if ([[segue identifier] isEqualToString:@"anotherSegueIdentifier"]) {
        //other preparation
    }
}
于 2013-08-04T14:16:05.810 回答
1

您还必须单击要制作的 TableViewController > TableView > Attributes Inspector> Prototype Cells = numberOfSeguqes。

于 2016-02-27T09:46:25.683 回答
0

只需从原型单元按 ctrl+拖动到不同的目标视图控制器并分配不同的标识符。

假设您有一个原型单元和四个不同的目标视图控制器。请按照以下步骤操作

  1. ctrl+ 从原型单元拖动到第一个目标视图控制器并在属性检查器中分配一个标识符,例如“cell2view1”
  2. ctrl+ 从原型单元拖动到第二个目标视图控制器并在属性检查器中分配一个标识符,例如“cell2view2”
  3. ctrl+ 从原型单元拖动到第三个目标视图控制器并在属性检查器中分配一个标识符,例如“cell2view3”
  4. ctrl+ 从原型单元拖动到第四个目标视图控制器,并在属性检查器中分配一个标识符,例如“cell2view4”

您的 [segue destinationViewcontroller] 将根据您的情节提要自动设置。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {

    if ([[segue identifier] isEqualToString:@"cell2view1"]) 
    {
        //Do things
    }
    else if ([[segue identifier] isEqualToString:@"cell2view2"])
    {

    }
 }
于 2013-08-04T14:10:23.920 回答