entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Cómo hacer que una imagen cambie en ciertas condiciones?

Tengo varios botones que se ocultan y muestran entre ellos (un boton muestra otro al clicar sobre él y se oculta el primero y viceversa) intento conseguir que cuando haya ciertos botones visibles y ciertos ocultos se muestre una imagen y se mande un valor al NSUserDefault (el codigo para guardar el valor ya lo tengo) pero me hace falta el de la condición.
Muchas gracias

3 Respuestas

2votos

Hola Borja,
mi aproximación sería la siguiente: Al final de cada método IBAction de cada botón añadiría una llamada a función

[self checkImageVisibility];

Dentro de la función checkImageVisibility haría la comprobación de qué botones están visibles o invisibles, y en función de eso mostrar la imagen y mandar el valor que quieras al NSUserDefault.

Para ello necesitas añadir los IBOutlet de cada uno de los botones de los que quieras comprobar su visibilidad. Esto se hace muy fácil usando Storyboard. Muestras el assistant editor (botón que puedes encontrar arriba a la derecha). A la izquierda tu Storyboard, y a la derecha tu ViewController.h. Ahora, presionando control, arrastras desde uno de los botones hasta la declaración de la interfaz ViewController. Al soltar, te añadirá una property para que puedas acceder a este botón desde el código. Hacemos lo mismo para cada botón.

Dentro ya de la función checkImageVisibility implementas la condición que desees. Para saber si un botón está visible o no:

if ([_button1 isHidden]){
}

Espero haber servido de ayuda.
¡Saludos!

0voto

Borjagq comentado

Muchas gracias por la explicación, me es muy util. Solamente me quedo con una duda que puede que sea muy sencilla, para implementar las condiciones, donde he de declarar la funcion? en que archivo y que sección? Muchas gracias otra vez

0voto

roberto_garrido_mart comentado

Hola Borja.
La implementación de la función checkImageVisibility la puedes definir directamente en el fichero fuente ".m". No tienes por qué declararla en el ".h" ya que no se va a llamar desde fuera, así que puedes directamente implementarla. Esta es una de las muchas peculiaridades de Objective-C ;-)
Siguiendo el ejemplo anterior, éste sería el fichero ViewController.h:

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *button1;
@end

Y éste sería el fichero ViewController.m:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)button1Pressed:(id)sender {

    [self checkImageVisibility];
}

- (void)checkImageVisibility {

    if ([_button1 isHidden]){
        // Add code here...
    }
}

@end

Espero que te haya servido de ayuda. Cualquier otra cosa, nos comentas.
¡Un abrazo!

0voto

Borjagq comentado

genial, muchisimas gracias por ayudarme!
Saludos!

1voto

Puntos0

Si no te he entendido mal, tienes varias opciones:

Si no, por favor, enseña algo de código a ver como lo has montado.
Un saludo.

1voto

egoitz_gonzalez Puntos10050

Hola.

tal vez necesitamos algo mas de información para poder responder mejor.

De todas formas lo mas sencillo no es usar un simple if? un if con ANDs y ORs ?

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta