5

He creado varias escenas dentro de un archivo de guión gráfico en mi proyecto de Xcode, y la primera escena que se carga es un inicio de sesión de usuario en la pantalla. Cuando un usuario inicia sesión en el UIButton, "Iniciar sesión" lleva al usuario a la pantalla de bienvenida. Configuré eso en el guión gráfico usando una transición modal. Quiero que un usuario con el nombre "admin" sea llevado a una pantalla de administración de bienvenida. Estoy bastante seguro de que solo es posible tener un segue asociado a un objeto, es decir, UIButton en el guión gráfico, por lo que no sé cómo puedo lograr el inicio de sesión para llevar al administrador a la pantalla de bienvenida del administrador y llevar a todos los demás usuarios a la pantalla de bienvenida del usuario. Realmente no quiero crear dos botones de inicio de sesión por separado, así que esa no es una opción.Un UIButton dos escenas solo un segue, código condicional necesario

Encontré algunos mensajes de stackoverflow con preguntas similares, pero todas las respuestas parecían un poco intrincadas. Tenga en cuenta que soy nuevo en Xcode, así que si pega el código en su respuesta, especifique a qué archivo debe ir el código (eso me ayudaría MUCHO). Publicaré una imagen de cómo se ve mi storyboard hasta el momento para ayudar a demostrar un diagrama visual de lo que estoy hablando.

enter image description here

Respuesta

6

Si he entendido bien su pregunta, estos son los pasos que debe tomar para hacer que funcione:

  1. Desde el WelcomeViewController - donde usted tiene el botón de inicio de sesión nombre de usuario/contraseña, control + arrastre desde el UIViewController al WelcomeScreen, y elija Modal desde el menú emergente (Por arrastre desde UIViewController Es decir, seleccione UIViewController en el guión gráfico, hay un icono de forma redonda en la parte inferior, desde ese hasta el controlador de vista de destino). Denomine el identificador de segue como "UserSegue"

  2. Repita el paso 1, pero en su lugar controle + arrástrelo a la pantalla Admin.Nombre del identificador segue como "AdminSegue"

  3. Es necesario ahora a la subclase WelcomeViewController,

  4. Implementar -(IBAction)login:(id)sender

    - (IBAction)login:(id)sender { 
    
        // assuming you have hooked up the user name text field 
    
        if ([self.usernameTextField.text isEqualToString:@"admin"]) { 
         [self performSegueWithIdentifier:@"AdminSegue" sender:sender]; 
        } 
        else { 
         [self performSegueWithIdentifier:@"UserSegue" sender:sender]; 
        } 
    } 
    
  5. En guión gráfico, conectar el botón de inicio de sesión con el método en el paso 4.

+0

muchas gracias por la respuesta oportuna, tu es la solución que estaba buscando. – Chris

1

Así es - que sólo puede tener un segue saliente desde un botón (u otro control).

Sin embargo, puede tener cualquier cantidad de segmentos salientes desde un controlador de vista. A diferencia de los adjuntos a un botón (u otro control), los sucesos de un controlador de vista no se invocan automáticamente cuando se toca un control; tiene que hacerlo en código, pero hacerlo en código le da la flexibilidad de hacerlo de acuerdo a cualquier condición que necesites

Para realizar una transición desde un controlador de vista, mantenga presionada la tecla control desde el icono del controlador de vista debajo de su vista (el círculo naranja) en IB, o desde su entrada en el contorno de la escena. Después de crear el segue, déle un identificador único (por ejemplo, "mySegue").

A continuación, cree un método de acción conectado a su botón. En la implementación de ese método (que presumiblemente está en el controlador de visualización que contiene el botón), pruebe las condiciones que necesite y llame al [self performSegueWithIdentifier:@"mySegue"] para realizar el cambio.

Hay más explicaciones en mi answer to a similar question, si eso ayuda.

Cuestiones relacionadas