Necesito ayuda con una vista de alerta automática con acciones
Frecuentes
Visto 71 equipos
1
De acuerdo, cuando un usuario inicia mi aplicación por primera vez, quiero una Vista de alerta que aparecerá con 2 opciones. Estoy usando este método a continuación:
- (void) displayWelcomeScreen
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *alreadyRun = @"already-run";
if ([prefs boolForKey:alreadyRun])
return;
[prefs setBool:YES forKey:alreadyRun];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"…"
message:@"…"
delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
Cuando abro la aplicación por primera vez, no aparece ninguna vista de alerta. ¿Estoy haciendo algo mal? Por cierto, quiero que se muestre solo en el primer lanzamiento de la aplicación. No debe mostrarse en ningún otro momento. Gracias por adelantado.
3 Respuestas
1
Prueba esto:
(void)viewDidLoad{
NSLog(@"In viewDidLoad");
[self displayWelcomeScreen];
}
en displayWelcomeScreen código de escritura:
- (void) displayWelcomeScreen
{
NSLog(@"In displayWelcomeScreen");
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *alreadyRun = @"already-run";
if ([prefs boolForKey:alreadyRun])
return;
[prefs setBool:YES forKey:alreadyRun];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"…"
message:@"…"
delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
y verifique si en la consola se muestra In displayWelcomeScreen.
Respondido 04 Jul 12, 11:07
0
Intenta usar estos. Acabo de hacer algunas modificaciones a su código.
- (void) displayWelcomeScreen
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([prefs objectForKey:@"alreadyRun"])
{
return;
}
else
{
[prefs setObject:@"YES" forKey:@"alreadyRun"];
[prefs synchronize];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"…"
message:@"…"
delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
}
Respondido 04 Jul 12, 10:07
intente poner algún punto de interrupción al comienzo de la función y verifique el flujo de control. Entonces podemos averiguar de dónde se desvía el control. - Mateo Varghese
Soy nuevo en xcode, así que no tengo mucha confianza con los puntos de interrupción. Aunque siempre he querido usarlos. - James
Puede agregar puntos de interrupción simplemente haciendo clic arriba en el número de línea de cada línea de código (en la barra lateral que se muestra a la izquierda del código que muestra el número de línea). O intente insertar algunos NSLogs al azar en el código y verifique cómo funciona el flujo de control allí. Si se ejecutó NSLog(), puede obtener el mensaje impreso en la consola. - Mateo Varghese
¡Gracias por su asistencia! La solución de @Nuzhat Zari funcionó :) - James
0
en su appDelegate didFinishLaunchingWithOptions, agregue algo como esto
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:@"everLaunched"]) {
[defaults setBool:YES forKey:@"everLaunched"];
[defaults setBool:YES forKey:@"firstLaunch"];
}
else{
[defaults setBool:NO forKey:@"firstLaunch"];
}
para verificar si necesita mostrar un mensaje de bienvenida:
- (void) displayWelcomeScreen
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
{
NSLog(@"I should display alert view now with two selections");
//what to you want to to here now? show alert view? with two choices?
//you might want to remember the selected choice from user
}
else {
NSLog(@"the user already made his choice, this is not a first launch");
//what do you want to do here now? show home screen? let the user use the app?
//the user has already made his choice
}
}
Respondido 04 Jul 12, 10:07
¿Le importaría publicar el código completo para displayWelcomeScreen? Estoy un poco confundida. - James
@James Edité el código. agregue un comentario cuando encuentre un problema - Janusfidel
Gracias eso es exactamente lo que hice. Sin embargo, todavía no se mostrará. Debo estar cometiendo un error en alguna parte - James
Desinstalé la aplicación pero no vi la alerta. ¿Hay una ubicación específica en la que debo colocar la pantalla de bienvenida? James
@James Edité el código. Supongo que llamas a displayWelcomeScreen cuando el usuario está a punto de usar la aplicación. ¿Agregaste el primer fragmento de código en tu aplicación Delegate>? - Janusfidel
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas iphone objective-c ios5 or haz tu propia pregunta.
Lo intenté ahora, pero sin suerte, todavía no se mostró. - James
Solo para aclarar, debe configurar el delegado en el archivo .h escribir? - James
¿Cómo configuró el delegado? mostrar aquí. - Bazinga
¿Dónde está llamando a su método displayWelcomeScreen? - Nuzhat Zari
solía en el archivo viewcontroller.h - James