style objective alertas ios objective-c ios8 uialertview

objective - iOS 8: UIAlertView/UIAlertController no muestra texto o botones



uialertcontroller styles (8)

Verifica si la clase está disponible

if ([UIAlertController class]) { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert title" message:@"Alert message" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; [alertController addAction:ok]; [self presentViewController:alertController animated:YES completion:nil]; } else { UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Alert title" message:@"Alert message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; }

Tengo un UIAlertView que se muestra perfectamente en iOS 7 pero en iOS 8, no muestra botones ni etiquetas. La alerta sigue siendo visible, pero solo una pequeña caja blanca. Los botones Aceptar y Cancelar toman sus eventos también pero no hay textos visibles.

He usado esta alerta para mostrar al hacer clic en un botón

- (IBAction)sel_btnLogout:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logout!" message:@"Are you sure you want to logout?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; [alert show]; }

Revisé el marco en iOS 8: está dando (0,0,0,0) pero en iOS 7 está dando un valor definido.

También verifiqué la iteración en las subvistas de uialertview. En iOS7, va en el bucle, ya que encuentra subvistas de alerta. En iOS8, dice que no hay subvistas de alertView.


en iOS 8 necesita reemplazar UIAletrview y UIActionSheet con UIAlertcontroller . Lees primero Esta documentación en el foro de Apple
Apple Alertcontroller


Obtuve la respuesta a mi problema. El problema era que estaba usando la categoría UIFont + Replacement en mi proyecto. Esto funcionaba bien en iOS 7 pero en iOS 8 usaba pocos métodos obsoletos. Debido a esto, no sé por qué, pero solo mi vista de alerta no mostraba ninguna etiqueta.

Solución: eliminó la categoría del proyecto y estableció la fuente a través de xib. Una vez que colocamos el archivo .tff de cualquier fuente en el espacio de trabajo de nuestro proyecto, vemos esos nombres de fuente en el xib en fuentes personalizadas. NO NECESITA UTILIZAR UIFont + categoría de reemplazo.


Con iOS 8 puedes establecer el título en lugar del mensaje:

[[[UIAlertView alloc] initWithTitle:@"AlertView in iOS 8." message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]show];

UIAlertView está en desuso de iOS 8 para obtener más información visite este

http://nshipster.com/uialertcontroller/ . https://developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIAlertViewDelegate_Protocol/index.html

Entonces, si vas a escribir un código separado para iOS 7 e iOS 8, deberías usar UIAlertController en su lugar:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"AlertView in iOS 8" message:nil preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { [self dismissViewControllerAnimated:YES completion:nil]; }]]; [self presentViewController:alertController animated:YES completion:nil];


Puedes verificar ese código

if (([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] == NSOrderedAscending)) { // use UIAlertView UIAlertView *alert = [[UIAlertView alloc]initWithTitle:Title message:desc delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; } else { // use UIAlertController UIAlertController *alert = [UIAlertController alertControllerWithTitle:Title message:desc preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [alert addAction:okAction]; [self presentViewController:alert animated:YES completion:nil]; }


Lea el siguiente código para comprender cómo agregar los campos y botones a las alertas.

- (IBAction)UIAlertControllerWithActionSheetTextFields:(id)sender { UIAlertController * alert= [UIAlertController alertControllerWithTitle:@"Info" message:@"You are using UIAlertController with Actionsheet and text fields" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { NSLog(@"Resolving UIAlert Action for tapping OK Button"); [alert dismissViewControllerAnimated:YES completion:nil]; }]; UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { NSLog(@"Resolving UIAlertActionController for tapping cancel button"); [alert dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:ok]; [alert addAction:cancel]; [alert addTextFieldWithConfigurationHandler:^(UITextField * textField) { textField.accessibilityIdentifier = @"usernameTextField"; textField.placeholder = @"Enter your username"; textField.accessibilityLabel = @"usernameLabel"; }]; [alert addTextFieldWithConfigurationHandler:^(UITextField * textField) { textField.placeholder = @"Enter your password"; textField.accessibilityIdentifier = @"paswordTextField"; textField.accessibilityLabel = @"passwordLabel"; }]; [self presentViewController:alert animated:YES completion:nil]; }

y si necesita un proyecto para referir completamente los tipos de alertas que están disponibles en IOS, siga mi proyecto desde la siguiente URL:

Variaciones de alerta en IOS


let alert = UIAlertController(title: "Warning" as String , message: messageString as String, preferredStyle: .Alert) let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { UIAlertAction in self.dismissViewControllerAnimated(true, completion: nil) } // Add the actions alert.addAction(okAction) self.presentViewController(alert, animated: true, completion: nil)


Creo que esto no es problemas de vista de UIAlertview . por favor revisa bien este trabajo ...

Creo que tu código emite ...........

en cualquier view controller pone este código en viewDidLoad como a continuación:

- (void)viewDidLoad { [super viewDidLoad]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"My message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; [alert show]; }