Question

J'ai eu un bon UIScrollView dans ma pointe, qui a bien fonctionné. Ensuite, j'ai eu des besoins très spéciaux et UIScrollView sous-classé. Dans ma plume, j'ai changé la classe de l'inspecteur d'identité en sous-classe.

Mais pour une raison quelconque, ma méthode -initWithFrame: n'est jamais appelée lorsque le chargeur de nib construit tous ces objets à partir du nib. En fait, je n'ai rien changé pour le moment dans ma sous-classe. Et la vue par défilement fonctionne bien. Attendez-vous à ce que cela semble être un UIScrollView vierge, même si je disais à la nib que ce devrait être un SpecializedUIScrollView à des fins de test.

Y a-t-il autre chose que je dois prendre en compte lors de la sous-classification d'un UIScrollView tout en utilisant un fichier Nib pour le mettre en perspective?

Mon initialiseur dédié ressemble à ceci:

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

Je ne vois jamais ce message dans la console si j'essaie de le charger à partir de Nib. Bien sûr, si j’alloue et initialise cela par moi-même, cela fonctionne. Mais je ne veux pas positionner ma vue de défilement par programme, si je peux utiliser à la place ce maudit Interface Builder.

Était-ce utile?

La solution

Les objets d'un nib ou xib sont stockés en tant qu'objets sérialisés. Cela peut signifier que vous devez utiliser la méthode awakeFromNib car les méthodes init ne sont jamais appelées.

Autres conseils

Étendez initWithCoder , veillez à appeler la super méthode. C’est lors de ce super appel que setFrame sera appelé sur votre classe.

Vous pouvez ensuite réutiliser votre appel initWithFrame standard dans initWithCoder , et le générateur d'interface contrôlera la taille du cadre.

- (id)initWithCoder:(NSCoder *)aDecoder {
    [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
    return [self initWithFrame:[self frame]];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top