ios-UIButton codificado programáticamente no se muestra en mi vista
viewdidload (6)
Tienes que usar el tipo de botón es RoundedRect, entonces podemos ver el color de fondo
[UIButton buttonWithType: UIButtonTypeRoundedRect];
Espero que ayude!
.
Hola,
Estoy tratando de agregar un UIButton y otros elementos a mi UIViewController mediante programación y de lo que he leído y visto en otras preguntas de SO debería estar en el camino correcto con este código:
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton = [[UIButton alloc] init];
backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back";
[self.view addSubview:backButton];
// Do any additional setup after loading the view.
}
Ahora que el código se coloca en el método viewDidLoad y no aparece, lo que me lleva a la pregunta: ¿Qué estoy haciendo mal?
Cuando quiero cambiar el color del fondo y ponerlo en viewDidLoad, funciona bien.
Saludos Jeff
Está configurando el título del botón incorrectamente. Utilizar:
- (void)setTitle:(NSString *)title forState:(UIControlState)state
Además, como otros han dicho, no es necesario inicializar el botón tres veces. Retire la 2da y 3ra líneas.
Ha creado el botón usando el método estático buttonWithType, nuevamente ha asignado memoria para ese botón.
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back";
[self.view addSubview:backButton];
Creo que puede estar insertando el botón correctamente, pero simplemente no puede verlo porque no tiene fondo y el texto no se muestra.
Intenta usar un botón de sistema de botón recto redondeado , solo para ver si eso lo hace aparecer. Establecer el texto correctamente También eliminaré la configuración de la fuente, solo en caso de que haya un problema con la fuente.
// backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
backButton = [UIButton buttonWithType:UIButtonTypeSystem];
backButton.frame = CGRectMake(10, 25, 150, 75);
[backButton setTitle:@"Back" forState:UIControlStateNormal];
[self.view addSubview:backButton];
Actualización: UIButtonTypeRoundedRect
ha quedado en desuso.
Puede usar dispatch_after para llamar a un bloque más tarde. de modo que aquí, cuando se cargue la primera vista, tardará menos de 0,1 segundos y luego todos los botones estarán visibles a la vista. Xcode, comienza a escribir dispatch_after y presiona Enter para autocompletar a lo siguiente:
Prueba esto:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton = [[UIButton alloc] init];
backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back";
[self.view addSubview:backButton];
});
Aparte de los problemas señalados en los comentarios
UIButtonTypeCustom, crea un botón en blanco.
Úselo cuando desee usar una Imagen como un botón, pero tenga en cuenta que usa setImage: anula el título del botón. Por lo tanto, deberá establecer una imagen de fondo.
Tu botón está realmente allí, simplemente no "parece" estar allí
Asi que
Use UIButtonTypeRoundRect
(puede ser un poco diferente)
o si quieres una imagen como un botón.
Use UIButtonTypeCustom
Call setBackgroundImage:
luego llame a setTitle:forState: