2011-08-31 14 views

Respuesta

0

Puede mantener un valor de BOOL en algún lugar de su clase que establezca en YES o NO al iniciar y detener la animación, respectivamente.

+1

Puedo. Pero preferiría no subclasificar todas las clases de Cocoa que uso :) –

+0

¿Por qué tendrías que clasificarlos a todos? ¿No puedes mantener una propiedad BOOL en tu clase de delegado o algo así? ¿O tienes más de un indicador de progreso? – edc1591

+2

Tengo más de uno, sí. Además, cada objeto debe mantener información sobre su propio estado, no clases externas. –

4

No debe almacenar el estado de un control en el control en sí.

El control del indicador de progreso no proporciona acceso a su estado animado porque a diferencia de algo así como un campo de texto, el usuario no puede cambiar el estado del control. Nunca se encontrará en una situación en la que el estado del control cambie sin que su código lo inicie. Porque usted es quien establece el estado de la misma, por lo que debe hacer un seguimiento de ello.

Cocoa usa el patrón Modelo-Vista-Controlador y un indicador de progreso es una vista. Si almacena estado en el control, está violando el patrón MVC.

Su vista debe reflejar su modelo en todo momento, y el controlador está allí para garantizar que la vista y el modelo se mantengan sincronizados.

Debe utilizar Cocoa Bindings para vincular el estado animado de su indicador de progreso a BOOL almacenado en su modelo (preferido) o implementar código en su clase de controlador para controlar el estado animado del indicador de progreso cuando hay un cambio a un BOOL almacenado en su modelo.

+0

No parece haber una propiedad 'isAnimating' para' NSProgressIndicator' (al menos no puedo encontrarlo en los documentos), por lo que no hay forma de utilizar Cocoa Bindings para esto :( – wcochran

+0

Es el 'animado' propiedad. –

Cuestiones relacionadas