Estoy creando un sistema de inicio de sesión dentro de mi aplicación que se llamará varias veces. Entonces, en lugar de copiar y pegar el código en varios lugares, por supuesto estoy haciendo una clase NSObject para poder llamar a la clase cuando sea necesario.Mostrar un UIAlertView en NSObject Clase
El sistema de inicio de sesión mostrará UIAlertView, y cuando se toque "OK", el sistema intentará iniciar sesión. Puedo llamar a la clase y se mostrará UIAlertView, pero no puedo decir qué botones están pulsados. Aquí está mi código:
//Calling the login system
Login *login = [[Login alloc] init];
Login.h:
#import <Foundation/Foundation.h>
@interface Login : NSObject <UIAlertViewDelegate> {
}
@end
Login.m:
#import "Login.h"
@implementation Login
+(void)initialize {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
NSLog(@"Testing");
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"Here");
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"OK"]) {
NSLog(@"Tapped");
}
}
@end
Por ahora, antes de poner UITextFields en la vista, me Solo quiero que la aplicación sepa qué botón se pulsó. Testing
aparece en el registro, pero no aparecen Here
ni Tapped
. ¡Gracias!
No anule initialize' (void) '+ !!!! '+ initialize' es ** mucho ** diferente de' -init'! Debes asegurarte de estar apropiadamente llamando 'super' también. Además, asegúrese de estar siguiendo las pautas de MVC. Por lo general, los objetos del modelo no deben mostrar elementos de UI. –
Jack Lawrence tiene razón: ¿quién es un delegado de UIAlertView? ni siquiera está inicializado, así es como no se llama como un delegado. –
¡Tienen razón! No he hecho esto antes, así que cambié + (void) initialize a - (id) init y funcionó. Jack Lawrence: escribe tu comentario como respuesta para que pueda marcarte bien. –