2012-06-21 10 views
17

Hola He creado botón de programación y conectado a otro punto de vista, pero me dio la advertencia segueSegues inició directamente de los controladores de vista de advertencia en Xcode guión gráfico

que debo utilizar prepareForSegue método para storyboard, pero no sé cómo, hay alguna muestra en internet, pero me da un error cuando utilicé esa muestra, usted por favor me ayude

aquí es mi código

Creación Botón

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.backgroundColor=[UIColor colorWithRed: 201.0/255.0 green: 201.0/255.0 blue:201.0/255.0 alpha: 1.0]; 
button.tag = currentTag; 
currentTag++; 
[button.layer setBorderColor: [[UIColor blackColor] CGColor]]; 
[button.layer setBorderWidth: 1.0]; 
[button setTitle:[NSString stringWithFormat:@"%d",currentTag] forState:UIControlStateNormal]; 
button.frame = CGRectMake(80*x, 32*y, 80, 32); 
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[buttonView addSubview: button]; 

Acción para el botón de

-(void)buttonPressed:(UIButton *)button 
{ 
    NSLog(@"button %u -- frame: %@", button.tag, NSStringFromCGRect(button.frame)); 
    [self performSegueWithIdentifier:@"WeekView" sender:self];  
} 

Prepárese para seguemi advertencia

Segues iniciadas directamente de los controladores de vista debe tener un identificador para su uso con - [UIViewController performSegueWithIdentifier: remitente :]

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"WeekView"]) { 
     [segue.destinationViewController setTitle:@"WeekView"]; 
    } 
} 
+0

¿Va a crear el Segue mediante programación o en el Interface Builder? – geminiCoder

Respuesta

26

Segues iniciada directamente de los controladores de vista debe tener un identificador para su uso con - [UIViewController performSegueWithIdentifier:sender:]

Esta advertencia se produce cuando se arrastra un segue directamente desde un controlador de vista de guión gráfico (aka, no desde un botón o cualquier acción control) y no escriba un Identificador (Nombre).

Tienes que darles un identificador o de lo contrario no hay forma de llamarlos programáticamente ... que es la única razón por la que vincularías un segue como este.

En Xcode 8, debería poder hacer clic en la advertencia para que el guión gráfico muestre la secuencia ofensiva para que pueda agregarle un nombre.

+11

Tan frustrante como hacerse cargo de un proyecto que tiene una advertencia como esta, ¿hay alguna manera de decir en qué parte de IB se realizó esta transición? – powerj1984

+1

@ powerj1984 Tuve este problema también cuando volví a mirar un proyecto anterior. Tuve que hacer clic en cada transición del guión gráfico y comprobar si se origina desde un controlador de vista. Si es así, entonces le doy un identificador. Otra solución sería obtener la ayuda de Xcode 5 para identificar la fuente. – XCool

+3

Consejo profesional: haz doble clic en la advertencia mientras estás en el guión gráfico y te llevará al delincuente. –

7

En Xcode 5, hice que esta advertencia desapareciera al nombrar no solo los segmentos, sino también los controladores de vista a los que conducen: cada controlador de vista necesita una ID de guión gráfico. Si solo nombra los segues, esta advertencia (engañosa) seguirá apareciendo.

4

Tuve la misma advertencia. Debe verificar cada transición si tiene un identificador como dijo XCool.

Xcool - Tuve este problema también al mirar atrás en un proyecto anterior. Tuve que hacer clic en cada transición del guión gráfico y comprobar si se origina desde un controlador de vista. Si es así, entonces le doy un identificador.

¡También compruebe sus desenrollar segues! Esto resolvió el problema para mí.

10

Esto fue resuelto mi problema.

Ir a Storyboard> Buscar todas las relaciones Push o Pop segue.

Seleccione cada relación segue> Compruebe atribuir propiedades inspector> sección

En esa sección Storyboard Segue dar identificador para todos segue.

enter image description here

Cuestiones relacionadas