Recibí un mensaje de error durante la navegación desde el primer controlador de vista a segunda vista controlador. Mi código es como este

let vc = LoginViewController(nibName: "LoginViewController", bundle: nil)
self.navigationController?.pushViewController(vc, animated: true)

El problema es que siempre tiene este tipo de mensaje de error

2014-12-09 16:51:08.219 XXXXX[1351:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/FDC7AA0A-4F61-47E7-955B-EE559ECC06A2/XXXXX.app> (loaded)' with name 'LoginViewController''
*** First throw call stack:
(0x2efcaf0b 0x39761ce7 0x2efcae4d 0x31b693f9 0x31ac1eaf 0x3191e365 0x317fe895 0x318a930d 0x318a9223 0x318a8801 0x318a8529 0x318a8299 0x318a8231 0x317fa305 0x3147631b 0x31471b3f 0x314719d1 0x314713e5 0x314711f7 0x3146af1d 0x2ef96039 0x2ef939c7 0x2ef93d13 0x2eefe769 0x2eefe54b 0x33e6b6d3 0x3185d891 0x4ccc8 0x4cd04 0x39c5fab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
  • Usted necesita agregar un LoginViewController.xib archivo en el proyecto. Cuando se crea LoginViewController.swift, asegúrese de incluir xib es seleccionado.
  • ya se unen a ella
  • Intenta agregar un nuevo controlador de vista, y el sustituto de LoginViewController y ver si funciona.
  • Por CIERTO, estoy usando el storyboard
  • A mí también, yo estoy usando el guión y utiliza el código para cargar un archivo xib y trabajó para mí.
  • Para acceder a un guión en el código, es necesario establecer su Historia de ID de la tarjeta en su guión.

17 Comentarios

  1. 117

    Ya he encontrado la respuesta

    Swift 4

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "nextView") as! NextViewController
    self.present(nextViewController, animated:true, completion:nil)

    Swift 3

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    
    let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController
    self.presentViewController(nextViewController, animated:true, completion:nil)
    • Desde dentro de un ViewController, usted puede acceder al guión gráfico de uso de auto.StoryBoard
    • Gracias, que resolver mi problema !
    • se esconde la «barra de navegación»
    • Si desea que la barra de navegación de diapositivas, use self.navigationController?.pushViewController(nextViewController, animated: true)
    • Lo que si se han UINavigationController etiqueta de UITabbarViewController cómo empujar UINavigationController en ese caso?
  2. 43

    Probar este. Aquí «LoginViewController» es el storyboardID especificado en el guión gráfico.

    Ver abajo

    let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("LoginViewController") as LoginViewController
    self.navigationController?.pushViewController(secondViewController, animated: true)
    • mismo mensaje de error..
    • Me sorprendió que Nurdin que la respuesta fue sugerido para trabajar (y no), porque es simplemente llamando a la push. Por supuesto, esto se VE como debería funcionar ya que estamos tratando con el controlador de navegación
  3. 38

    XCODE 8.2 Y SWIFT 3.0

    La actualidad existe un UIViewController

    let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
    self.present(loginVC, animated: true, completion: nil)

    Empujar a un existir UIViewController

    let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
    self.navigationController?.pushViewController(loginVC, animated: true)

    Recuerde que usted puede poner el UIViewController Identificador de seguir los pasos siguientes:

    • Seleccione Main.storyboard
    • Seleccione su UIViewController
    • Búsqueda de las Utilidades en el derecho
    • Seleccione la identidad del inspector de
    • De búsqueda en la sección de identidad «Storyboard » ID»
    • Poner el Identificador de la UIViewController

    Mediante programación desplazarse a otro punto de vista controlador/escena

    • La verdadera respuesta, he votado a favor, pero ¿por qué necesitamos «Restauración ID» ? Creo que «Storyoard ID» es suficiente para esta situación.
    • Gracias por tus comentarios @yucelbayram Una restauración identificador es una cadena que debe asignar a cualquier controlador de vista o vista en la que desea conservar y restaurar. En mi caso, yo uso este campo porque la necesito para determinada función, sin embargo, si usted no lo necesita puede quitar.
  4. 10

    Ver la mía.

    func actioncall () {
        let loginPageView = self.storyboard?.instantiateViewControllerWithIdentifier("LoginPageID") as! ViewController
        self.navigationController?.pushViewController(loginPageView, animated: true)
    }

    Si se utiliza la presentación de estilo, usted podría perder la página en la barra de navegación con el preset pushnavigation.

  5. 10

    Si quieres navegar a Controlador creado mediante Programación, a continuación, hacer esto:

    let newViewController = NewViewController()
    self.navigationController?.pushViewController(newViewController, animated: true)

    Si quieres navegar a Controlador en el Guión gráfico con el Identificador «newViewController», luego de hacer esto:

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = storyBoard.instantiateViewController(withIdentifier: "newViewController") as! NewViewController
            self.present(newViewController, animated: true, completion: nil)
  6. 9

    Puede pasar de una escena a otra mediante programación utilizando el siguiente código :

      let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    
      let objSomeViewController = storyBoard.instantiateViewControllerWithIdentifier(“storyboardID”) as! SomeViewController
    
      //If you want to push to new ViewController then use this
      self.navigationController?.pushViewController(objSomeViewController, animated: true)
    
      //---- OR ----
    
      //If you want to present the new ViewController then use this
      self.presentViewController(objSomeViewController, animated:true, completion:nil) 

    Aquí storyBoardID es el valor que se establece para la escena utilizando el Interface Builder.
    Esto se muestra a continuación :

    Mediante programación desplazarse a otro punto de vista controlador/escena

  7. 8

    Swift3:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController("LoginViewController) as UIViewController
    self.navigationController?.pushViewController(vc, animated: true)

    A probar esto. Usted confundido punta con guión de la representación.

  8. 2
    let VC1 = self.storyboard!.instantiateViewController(withIdentifier: "MyCustomViewController") as! ViewController
    let navController = UINavigationController(rootViewController: VC1)
    self.present(navController, animated:true, completion: nil)
  9. 2

    Mediante programación existen diferentes formas que se basan en diferentes situaciones

    1. carga storyenter código hereboard archivo nib

      let yourVc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
      self.present(yourVc, animated: true, completion: nil)

    2. Carga de xib

      let yourVc = YourViewController.init(nibName: "YourViewController", bundle: nil)
      self.present(yourVc, animated: true, completion: nil)

    3. Navegar a través de Segue

      self.performSegue(withIdentifier: "your UIView", sender: self)

  10. 1

    Te Doy mi código para hacer una transición.
    En este ejemplo, la acción se conecta a un UIButton. Así que no olvide ajustar.
    No olvides poner el nombre de su ViewController en el transition método.

    No olvide ajustar su guión demasiado. Su necesidad de tener una vista por viewController. Conecte cada ViewController para cada vista de guión gráfico. Se puede ver en el screenshoot de fuelle

    Mediante programación desplazarse a otro punto de vista controlador/escena
    Mediante programación desplazarse a otro punto de vista controlador/escena

    class PresentationViewController: UIViewController {
        override func viewDidLoad() {
             super.viewDidLoad()
    
             var playButton   = UIButton.buttonWithType(UIButtonType.System) as UIButton
    
             let image = UIImage(named: "YourPlayButton") as UIImage?
    
             playButton.frame = CGRectMake(0, 0, 100, 100)
             playButton.center = CGPointMake(self.view.frame.width/2, self.view.frame.height/2)
             playButton.addTarget(self, action: "transition:", forControlEvents:  UIControlEvents.TouchUpInside)
             playButton.setBackgroundImage(image, forState: UIControlState.Normal)
    
             self.view.addSubview(playButton)
        }
    
    
    func transition(sender:UIButton!)
    {
        println("transition")
        let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("YourSecondViewController") as UIViewController
    
        let window = UIApplication.sharedApplication().windows[0] as UIWindow
        UIView.transitionFromView(
            window.rootViewController!.view,
            toView: secondViewController.view,
            duration: 0.65,
            options: .TransitionCrossDissolve,
            completion: {
                finished in window.rootViewController = secondViewController
        })
    }
    }
  11. 1

    Puede hacer la navegación entre vistas de los controladores utilizando el código con la ayuda de storyboard y storyboardId del controlador de vista.
    Este código es para Swift 3:

    let signUpVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SignUp")
    self.navigationController?.pushViewController(signUpVC, animated: true)
    • Hay alguna introducción o explicación que usted puede pensar el código en tu respuesta? Quizás una primera frase como «yo creo que se quiere código como este:».
  12. 0

    No estoy seguro de que intente debajo de los pasos,creo que puede ser el error se produce por debajo de razones.

    • de cambiar el nombre de algunos archivos fuera de XCode. Para resolver eliminar los archivos de su proyecto y volver a importar los archivos en el proyecto.
    • comprobar y agregar falta el archivo Nib en fases de construcción->Copiar paquete de recursos.por último, compruebe la punta de nombre de ortografía, es correcto, sensible a mayúsculas y minúsculas.
    • compruebe las propiedades de la .xib/storyboard archivos en la inspector de archivo ,la propiedad «Objetivo de Pertenencia» pitch » en el cuadro de selección,a continuación, su xib/archivo de guión gráfico fue vinculado con su destino.
    • tales como el tipo incorrecto de PUNTA.Haga clic derecho sobre el archivo y haga clic en «Obtener Información» para comprobar que el tipo es lo que cabría esperar.
    • no funciona en todos..
  13. 0

    Si usted está construyendo interfaz de usuario sin necesidad de arrastrar y soltar (sin guión)
    y quiere navegar de página predeterminado o ViewController.swift a otra página?
    Siga estos pasos
    1) agregar una clase (.swift)
    2) La Importación De UIKit
    3) Declarar el nombre de la clase como

    class DemoNavigationClass :UIViewController{
         override func viewDidLoad(){
             let lbl_Hello = UILabel(frame: CGRect(x:self.view.frame.width/3, y:self.view.frame.height/2, 200, 30));
    lbl_Hello.text = "You are on Next Page"
    lbl_Hello.textColor = UIColor.white
    self.view.addSubview(lbl_Hello)
        }
    }

    después de la creación de la segunda página de volver a la primera página (ViewController.swift)
    Aquí hacer un botón en el método viewDidLoad

    let button = UIButton()
    button.frame = (frame: CGRect(x: self.view.frame.width/3, y: self.view.frame.height/1.5,   width: 200, height: 50))
     button.backgroundColor = UIColor.red
     button.setTitle("Go to Next ", for: .normal)
     button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
     self.view.addSubview(button)

    ahora definir el método de entrada de teclado buttonaction fuera de viewDidLoad() en la misma clase

    func buttonAction(sender: UIButton!) 
    {
        let obj : DemoNavigationClass = DemoNavigationClass();
        self.navigationController?.pushViewController(obj, animated: true)
    }

    Tener una cosa que se me olvida
    en principal.guión hay una escena con una flecha,
    seleccione esa flecha y pulse el botón eliminar

    ahora arrastrar y soltar un navigationcontroller y eliminar formato tableview que viene con navaigation controlador.
    seleccione navigationcontroller presione la tecla control del teclado y arrástrelo a otra escena en el guión gráfico que es ViewController.
    Esto significa que el viewcontroller convertirse en root viewcontroller
    espero que esto ayude
    Gracias
    en principal.storyboard , arrastrar y soltar navigationcontroller,

  14. 0
    let signUpVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SignUp")
    //self.present(signUpVC, animated: false, completion: nil)
    self.navigationController?.pushViewController(signUpVC, animated: true)
    • Necesitamos añadir algo de contenido en torno a su respuesta y explique un poco.
  15. 0

    Además de las buenas respuestas anteriores para establecer la vista de navegación controlador en la parte superior de la pantalla en su aplicación, usted puede añadir a su AppDelegate.swift archivo dentro del bloque de la siguiente manera

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
        window = UIWindow()
        window?.makeKeyAndVisible()
        window?.rootViewController = UINavigationController(rootViewController: LoginViewController())
    
        return true
    
    }
  16. 0

    Swift 4.0.3

     @IBAction func registerNewUserButtonTapped(_ sender: Any) {
    
            print("---------------------------registerNewUserButtonTapped --------------------------- ");
    
            let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    
            let nextViewController = storyBoard.instantiateViewController(withIdentifier: "RegisterNewUserViewController") as! RegisterNewUserViewController
            self.present(nextViewController, animated:true, completion:nil)
    
        }

    Cambiar nuestro Nombre de Controlador de RegisterNewUserViewController

    • Debe ser storyboard
  17. 0

    XCODE 9.2 Y SWIFT 3.0

    ViewController a NextViewcontroller sin Segue Conexión

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
    self.navigationController?.pushViewController(nextViewController, animated:true)

    o

    let VC:NextViewController = storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
    self.navigationController?.pushViewController(VC, animated: true)

Dejar respuesta

Please enter your comment!
Please enter your name here