Pregunta

(Resuelto casi, pero no del todo) (Mi solución temporal es el uso de un método void, y se llama en cada botón, y en que manera puedo editar el código utilizado por varios botones en lugar de cuando la realización de mejoras tener que editar cada uno de los botones individuales si la instrucción)

Apuesto a que es un simple error que he hecho, pero no puedo encontrarlo.

Estoy tratando de mostrar una definidos previamente alerta cuando un entero alcanza los 50;esta es la declaración de si voy a usar en el método viewDidLoad:

if(count == 50){
    [alert show];
}

Cuando el número entero llega a 50, no pasa nada.Donde he ido mal?

El entero es cambiado como este en un IBAction:

 count+=10;

Si puedo eliminar la instrucción if y acaba de salir la alerta para mostrar, muestra cuando el punto de vista de las cargas.Por lo que la alerta no es el problema.

Alguien señaló que si este código sólo se ejecuta una vez en el método viewDidLoad y el entero es cambiado a 50 en una etapa posterior no va a esperar para el entero a 50, en lugar de ver que el valor no sea de 50 y no ejecutar la alerta que nunca.

Entonces, ¿cómo puedo ver el entero con el código, y ejecutar una alerta cuando el entero es de 50, Pero no llame a la alerta en la acción que está aumentando el número entero?

Ah, y por cierto he intentado llamar a la instrucción if en la acción que aumenta el número entero y que funciona, pero tengo cerca de 100 botones que aumentar el recuento entero y comprobar si el valor es de 50 en cada botón que parece un poco que ocupan mucho espacio y tiempo para todos los que copiar y pegar.También tengo pensado tener más que una alerta suceder cuando el número entero llegue a 50.Estoy seguro de que hay una forma más eficiente de sólo la comprobación de si el valor del entero de conteo es de 50.

¿Fue útil?

Solución

Trate de añadir

if(count == 50){
    [alert show];}

En el mismo IBAction derecha después de agregar 10 para contar.

Otros consejos

Cuando dice

  

Sin embargo, cuando el número entero alcanza 50 no pasa nada

Esto me lleva a creer que se está cambiando el valor entero después se ejecuta el método -viewDidLoad. Su sentencia if se evalúa sólo una vez, cuando se carga la vista, por lo que si usted está cambiando el valor del entero después de ese momento tendrá que añadir la vista de alertas a lo que está cambiando el número entero.

Esto debe estar bien - Objective-C es una capa delgada en la parte superior de la C, la sintaxis C de manera válida debería funcionar. ¿Qué tipo de variable es contar? Se desea definir como una int, no un NSNumber. NSNumber es una clase que se ajusta un número para que pueda ser utilizado como un objeto de Objective-C -. Pero no se puede comparar con la sintaxis ==

Espero que ayude!

Comprobar cabo de valor-clave observar

Si realiza el contador de una propiedad, usted debe ser capaz de configurar un observador que se activa siempre que cambia el valor. En ese observador, que puede hacer su cheque para disparar la alerta.

Trate

NSLog(@"count is %d",count); 

y ver si el problema está ahí. Es difícil decir si la cuenta está en mal estado o alerta, pero el problema no es si con su propia declaración.

un par de cosas para probar,

  • establece un punto de quiebre en la sentencia if
  • cambiar la sentencia if para count >= 50
  • es contar realmente un int o se trata de un flotador?

La respuesta más sencilla:Tener todas las cosas que se incrementan count ir a través de un método en el controlador de hacerlo y tienen que método de comprobar si es el momento de mostrar la alerta.

El más complicado de respuesta que trata de ver el valor: Clave-Valor De La Observación.Puede establecer un observador para ver el valor y responder con la alerta cuando llegue a 50.Pero esto va a tomar más de código y ser más complicado y error propensos que sólo la introducción de un método centralizado para controlar el comportamiento.

No entiendo, ¿por qué no se puede mostrar la alerta en el código que incrementa el contador? Que sobresalen necesita una referencia a la UIAlertView ... o enviar una notificación de alerta del código de retención está escuchando.

viewDidLoad solamente se ejecuta cuando se carga la vista - que es cuando se crea. Después de que no va a conseguir correr de nuevo, salvo en circunstancias especiales.

Si desea que se compruebe la cuenta cada vez que se pulsa un botón y aumentar el recuento, y luego hacerlo en el IBAction.

Se podría hacer un método que comprueba el contador de la forma

-(BOOL) checkCounter
{
  return count == 50;
}

Y lo llaman en sus botones como tal después de haber incrementado que:

if ([self checkCounter])
{
//do stuff when it's 50
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top