Domanda

Avevo un bel UIScrollView all'interno del mio pennino, che ha funzionato bene. Poi ho avuto delle esigenze molto speciali e ho eseguito la sottoclasse di UIScrollView. Nel mio pennino, ho cambiato la classe nella finestra di ispezione identità nella mia sottoclasse.

Ma per qualche ragione, il mio metodo -initWithFrame: non viene mai chiamato quando il caricatore del pennino costruisce tutti quegli oggetti dal pennino. In realtà non ho cambiato nulla in questo momento nella mia sottoclasse. E la vista di scorrimento funziona bene. Aspettatevi che sembri un UIScrollView vuoto anche se ho detto al pennino che dovrebbe essere un UIScrollView specializzato a scopo di test.

C'è qualcos'altro che devo considerare quando si esegue la sottoclasse di un UIScrollView mentre si utilizza ancora un file pennino per portarlo in prospettiva?

Il mio inizializzatore dedicato è simile al seguente:

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        NSLog(@"Hello !!!!!!!!!!!!!");
    }
    return self;
}

Non vedo mai quel Hello nella console, se provo a caricarlo dal pennino. Ovviamente, se lo alloco e lo inizializzo da solo, funziona. Ma non voglio posizionare la mia vista di scorrimento in modo programmatico, se posso usare invece quel dannato Interface Builder.

È stato utile?

Soluzione

Gli oggetti in un pennino o xib sono memorizzati come oggetti serializzati, questo può significare che devi usare il metodo awakeFromNib perché i metodi init non vengono mai chiamati.

Altri suggerimenti

Estendi initWithCoder , assicurati di chiamare il metodo super. È durante questa super chiamata che setFrame verrà chiamato nella tua classe.

È quindi possibile riutilizzare la chiamata standard initWithFrame in initWithCoder e il builder dell'interfaccia controllerà la dimensione del frame.

- (id)initWithCoder:(NSCoder *)aDecoder {
    [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
    return [self initWithFrame:[self frame]];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top