Domanda

Ho un UIViewController che viene inizializzato con un frame corretto, però da qualche parte nel mio codice telaio viene storpiato e sto avendo difficoltà a trovare dove.

In situazioni come questa di solito è utile per watch una variabile nel debugger, tuttavia non ho modo di accedere al Controller-> Visualizza-> Proprietà fotogramma a mio avviso variabile, in quanto non è una variabile, è un proprietà (sorprendentemente)

perforazione della UIView sul display variabili mostra un paio di cose, ma nulla che possa riguardare la struttura, ho pensato che forse sarebbe stato in layer ma non lo è.

C'è un modo per guardare per le modifiche in un privato API? Credo di no, dal momento che le variabili sono essenzialmente 'nascosti' e quindi non è possibile specificare esattamente cosa watch.

In alternativa, quale altro approccio potrei usare? Ho già provato sottoclasse UIView, impostando vista del mio UIViewController per puntare a questa sottoclasse e la rottura sul metodo SETFRAME ma non sembra funzionare.

EDIT: il metodo sottoclasse UIView ha funzionato, ho dovuto impostare la vista per puntare a mia prova sottoclasse in viewDidLoad e non il metodo init. Lasciando aperta la questione come io non sono sicuro se questo è il modo migliore per affrontare questo tipo di problema ...

È stato utile?

Soluzione 2

ho scoperto questo può essere fatto utilizzando osservatori valore della chiave.

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

Altri suggerimenti

sottoclasse tua la vista che si desidera tenere traccia e riscrivere il metodo SETFRAME:

@implementation MyTableView

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

@end

Quindi utilizzare il debugger per aggiungere un punto di interruzione per essa e verificare quando viene chiamato. Alla fine, si vedrà quando il telaio viene cambiato e dove il cambiamento viene da.

È possibile creare un Ivar, view2, ed appena assegnato alla visualizzazione nel metodo loadView. Questo dovrebbe consentire di guardarlo come una variabile normale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top