2011-12-11 3 views
0

Je suis un peu novice dans le développement iOS et j'ai besoin de conseils. J'ai un chat comme application. L'interface utilisateur doit avoir une vue enfant pour l'envoi de nouveaux messages au serveur et une vue enfant pour l'affichage des messages dans une vue de table.iOS Vues enfant, SRP et événements personnalisés

J'ai créé les deux vues enfant dans Interface Builder en tant que XIB: s. Mais je ne suis pas sûr de savoir comment les utiliser sur le contrôleur de la vue principale. Puis-je utiliser IB pour ajouter mes vues personnalisées à la surface de conception? Ou dois-je ajouter ces programmes par programme?

Quelle est la meilleure façon d'envoyer des messages ou des événements personnalisés entre ces deux vues enfants? J'aimerais les avoir aussi découplés que possible. Généralement, j'aimerais envoyer un événement lorsque l'utilisateur se connecte ou se déconnecte, afin que l'interface utilisateur puisse réagir à ces changements. Je voudrais également que la vue de table avec des messages sache quand un nouveau message est posté de la vue d'écriture.

// Johan

Répondre

1

Afin d'obtenir le contenu d'un fichier xib vous devez le charger d'abord envoyer un message à la classe loadNibNamed:owner:options: NSBundle. Considérons que vous avez une sous-classe UIView nommée CustomView et un fichier CustomView.xib. Dans le fichier xib, chaque vue a un tag. Votre fichier .h ressemblerait à:

@interface CustomView : UIView 

@property (nonatomic, assign) UILabel *someTextLabel; //use assign in order to not to override dealloc method 

@end 

.m 
@implementation CustomView 

- (id)init { 
    self = [super init]; 
    if (self) { 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil]; 
    [self addSubview:[topLevelObjects objectAtIndex:0]]; //this object is a CustomView.xib view 
    self.someTextLabel = (UILabel *)[self viewWithTag:5]; //consider you have a UILabel on CustomView.xib that has its tag set to 5 
    } 
    return self; 
} 

@end 

Ceci est sur la façon d'utiliser .xibs pour vos sous-classes UIView personnalisées. Si votre application ressemble à une discussion, vous devrez l'ajouter par programme. En ce qui concerne le meilleur moyen d'envoyer des messages entre deux vues personnalisées, vous devrez créer une référence faible l'une à l'autre dans chacune d'entre elles.

dans un

@property (nonatomic, assign) CustomView *customView; 

dans un autre

@property (nonatomic, assign) AnotherCustomView *anotherCustomView; 

et juste leur envoyer des messages lorsque certains se produit même

- (void)buttonPressed { 
    [customView handleButtonPressedEvent]; 
} 

Permettez-moi de savoir si cela est clair.

+0

Merci. Je ne l'ai pas résolu de cette façon, mais ça m'a fait démarrer! –

Questions connexes