Pergunta

Eu tenho um UIViewController que é inicializada com um frame correto, no entanto, em algum lugar no meu código da moldura fica desconfigurado e eu estou tendo dificuldade em descobrir onde.

Em situações como esta é geralmente útil para watch uma variável no depurador, no entanto eu não tenho nenhuma maneira de acessar o controlador->view->quadro propriedade na minha variável de vista, pois não é uma variável, é uma propriedade que (surpreendentemente)

A perfuração no a uiview nas variáveis visor mostra algumas coisas, mas nada que eu possa relacionar-se para o quadro, eu pensei, talvez, que seria no layer mas não é.

Existe alguma maneira de observar as alterações em uma API privada?Eu acho que não, pois as variáveis são, essencialmente, 'escondido' e então, você não pode especificar exatamente o que watch.

Como alternativa, de que outra forma eu poderia usar?Eu já tentei subclassificação a uiview, a configuração de meu UIViewController vista para apontar para esta subclasse e de ruptura com o setFrame método, mas ele não parece funcionar.

EDITAR:a subclassificação a uiview método de trabalhar, eu tinha que definir o modo de exibição para apontar para o meu teste na subclasse viewDidLoad e não o init o método.Deixando essa questão em aberto, como eu não tenho certeza se essa é a melhor forma de abordar esse tipo de problema...

Foi útil?

Solução 2

Eu descobri isso pode ser feito usando o valor de chave de observadores.

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/KeyValueObserving.html

Outras dicas

Subclasse seu o modo de exibição que você deseja acompanhar e reescrever o setFrame método:

@implementation MyTableView

- (void)setFrame:(CGRect)frame;
{
    NSLog(@"%@", frame);
    [super setFrame:frame];
}

@end

Em seguida, usar o depurador para adicionar um ponto de interrupção para ele e verificar quando ele é chamado.Eventualmente, você vai ver quando o quadro é alterado e onde é que a mudança vem.

Você poderia criar um ivar, view2, e atribuiu-lo para o modo de exibição em seu loadView o método.Que deve permitir a vê-lo como uma variável normal.

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