Creación manual segue correctamente a través de storyboard y xcode.

Soy bastante nuevo en xcode, y estoy tratando de desarrollar una aplicación de muestra que es básicamente una vista de tabla incrustada que tiene muchos niveles. Tengo una lista que almacena las celdas de cada vista de tabla. Si las celdas no tienen hijos, quiero poder ir a una vista detallada una vez que se presiona la celda. Eventualmente quiero poder ir a diferentes vistas detalladas según el tipo de datos. Para hacer esto, creé una vista detallada desde el guión gráfico, arrastré mi controlador de vista a mi vista detallada para crear un segmento "Push" manual, y etiqueté el segmento "segue1".

Editar: Código fuenteaquí

A continuación, relleno lo que asumí como las funciones necesarias para que esto funcione, que es llamar[self performSegueWithIdentifier:@"segue1" sender:myString]; donde myString es el título de la celda que seleccioné.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Check the dictionary to see what cell was clicked
    NSDictionary *dict = [self.tableDataSource objectAtIndex:indexPath.row];
    NSString *myString = [dict objectForKey:@"Title"];
    NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];

    NSArray *children = [dictionary objectForKey:@"Children"];

    //If there is no children, go to the detailed view
    if([children count] == 0)
    {
        [self performSegueWithIdentifier:@"segue1" sender:myString];

    }
    else{
        //Prepare to tableview.
        DrillDownViewController *rvController = [[DrillDownViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];

        //Increment the Current View
        rvController.CurrentLevel += 1;

        //Set the title;
        rvController.CurrentTitle = [dictionary objectForKey:@"Title"];

        //Push the new table view on the stack
        [self.navigationController pushViewController:rvController animated:YES];

        rvController.tableDataSource = children;

    }

}

Finalmente, llamé a prepare para segue, que busca segue etiquetado segue1.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"segue1"])
    {
        DrillDownDetailController *dvController = [[segue destinationViewController] visibleViewController];
        //DrillDownDetailController *dvController = [[DrillDownDetailController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
        [dvController setItemName:(NSString *)sender];
        [self.navigationController pushViewController:dvController animated:YES];
    }
}

Pensé que esto funcionaría, pero por alguna razón, cada vez que el código llega[self performSegueWithIdentifier:@"segue1" sender:myString];, se rompe con el error

***** Aplicación de terminación debido a la excepción no detectada 'NSInvalidArgumentException', razón: 'Receiver () no tiene ningún valor con el identificador' segue1 ''* Primer lanzamiento de la pila de llamadas: (0x14b4022 0xeb4cd6 0xdf61b 0x3590 0xa90fa 0xa87fa 0x9388536 0x14883d de la última moda de la carga de la última generación)

No puedo entender por qué me dice que no puede encontrar segue1 cuando ya está definido en el guión gráfico y el código.

Respuestas a la pregunta(2)

Su respuesta a la pregunta