Pergunta

Eu tenho uma interface de cacau que utiliza trama central. Ao pressionar um botão na interface, uma trama é desenhado. Eu queria criar uma sequência de gráficos, chamando o método plotagem várias vezes com chamadas dormir () no meio. Mas parece que mesmo que a chamada de dados de recarga é feita de que nada acontece até que as saídas de função (apenas mostrando último gráfico também). Agora eu sei que CPAnimation existe, mas antes de começar a usá-lo Eu queria saber o que é que acontece quando as saídas função que torna a atualização gráfico. Eu teria que ceder ao segmento que cuida do refrescante em vez de usar sono?

Foi útil?

Solução

Ok eu descobri como. I chamado o método reloadData a partir de um método em um segmento separado (que sempre retornos). Isso resumia a chamar reloadData de um IBAction e também com um NSTimer. Finalmente, em vez de usar sono vou usar NSConditionLock coordenar o processamento ea refrescante

Outras dicas

Presumivelmente, Core Plot (ou seu código) define a visão como necessitando de exibição. Isso não acontece imediatamente; isso acontece quando você voltar para o ciclo de eventos.

Sempre que você usa sleep em um aplicativo do Mac OS X, você mata um filhote de cachorro. Use NSTimer vez. Ter o seu método de retorno temporizador fazer o trabalho necessário para um gráfico, e conjunto de tudo o que variáveis ??de instância são necessários para o seu método de saber qual gráfico deveria desenhar, para que o método chama cada gráfico, por sua vez até que se esgote deles.

Ou, ainda melhor, apresentar uma lista de gráficos que o utilizador pode escolher, em vez de fazer o relógio utilizador todos os gráficos como um slide-show. (A menos que um slide-show explicitamente marcado é o que você está implementando.)

Núcleo Plot, como a maioria dos quadros de desenho de cacau, é preguiçoso: ele desenha no final da iteração do loop prazo. Isso é para garantir que as coisas não são desenhados com muita freqüência.

Ao invés de desenho imediatamente, as camadas são marcadas como necessitando de desenho.

Como foi apontado por outros, uma melhor abordagem para dormir é usar NSTimer para evitar o bloqueio do ciclo de execução ou a utilização de métodos NSObject como performSelector: withObject: afterDelay:

Peter tem direito no método de dados de recarga na verdade não desenhar qualquer coisa. A trama é marcado como necessitando de exibição e refrescado a próxima vez que as camadas são atraídos para o ecrã. Se você usar sleep, nunca tem a chance de desenhar.

Além disso, note que o Core Plot é um projeto bastante jovem; CPAnimation e as classes relacionadas são canhotos. Eles realmente não fazer nada ainda. : -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top