Problema con IB
-
29-09-2019 - |
Pregunta
Este es mi primer post en SO, así que ¡Hola!
Soy nuevo en Xcode y Obj-C también, así que no seas demasiado duro.
Estoy siguiendo la demo de Standford Universidad youtube.com/watch?v=L-FK1TrpUng Por alguna razón me he pegado a un error. En lugar de empezar desde cero prefiero averiguar dónde tengo mal se ha ido.
Ok, así que aquí va.
Tengo dos controladores de vista y actualmente estoy aprendiendo acerca de empuje y pop.
Mis primeros controladores de vista (firstViewController.h) cabecea:
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
}
- (IBAction)pushViewController:(id)sender;
@end
A continuación, este principio se creó en el archivo de implementación (firstViewController.m), como este
#import "firstViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
}
En este punto, con el IB me ctrl arrastrado desde 'del archivo de propietario' a un 'UIButton' y conectado 'pushViewController'
Sin embargo, en algún lugar a lo largo de la manera en que recibió somekind de error, que no hice caso.
Ahora tengo mi segundo controlador de vista añadido en mi firstViewController.m como esto;
#import "firstViewController.h"
#import "secondViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.title = @"Second";
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];
}
El error que he recibido previamente me pareció dejar de alguna manera desde ctrl arrastrando desde una textLabel en mi secondViewController punta ??p>
(secondeViewController.h)
#import "firstViewController.h"
#import "secondViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.title = @"Second";
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];
}
Así que me quité las referencias de mi UIButton original mediante clic derecho sobre él en el firstViewController.xib.
Ahora no puedo recrear el enlace desde 'del propietario del archivo' a los 'UIButtons', salida 'pushViewController' (¿es una toma o se trata de una acción?), Ni crear el enlace en mis secondViewControllers NIB 'del propietario del archivo' a el 'UILabel'.
Cualquier ayuda?
Los archivos de proyecto aquí si alguien está interesado. http://zer-o-one.com/upload/files/PushPop.zip
muy apreciado.
Solución
Una salida es un camino que conecta un objeto a otro. Una acción es un nombre de método que se llama en un objeto particular en respuesta a un evento. Cacao utiliza tradicionalmente objetivo / acción mucho para comunicarse, aunque esto está siendo desplazado en parte por bloques.
De todos modos, su proyecto:
El firstViewController.xib cree incorrectamente que el propietario del archivo es una clase de tipo 'FirstViewController'. En realidad es del tipo 'FirstViewController' - como la mayoría de los lenguajes de programación, Objective-C es sensible a mayúsculas para los nombres de las clases. En el Interface Builder, abierta firstViewControlller.xib, seleccione 'del propietario del archivo', abra el inspector y vaya a la pestaña 'i', entonces se corrige el nombre de la clase en la parte superior. Cuando hayas hecho esto, trate de cambiar a la pestaña de conexiones (el que tiene la flecha que apunta hacia la derecha) y debería ver que es correcta de encontrar su clase y su IBAction. A continuación, debería ser capaz de arrastrar el control.
Básicamente la misma observación se aplica a secondViewController.
En caso de que usted es curioso, Objective-C se diferencia de, por ejemplo, C ++ en la que todos los nombres de clase son conocidos en tiempo de ejecución y es posible crear una instancia de una clase a partir de la versión de serie de su nombre. Así es como / ONE se cargan XIBs.