2010-07-02 5 views
1

J'ai un uitabbarcontroller qui a un UIViewController ajouté. (Je réduit au plus petit cas possible). Cette viewcontroller appelle un UIView qui dessine un UIButton via:UITabbarController ne dessine pas une vue correctement

- (void)drawRect:(CGRect)rect 
{ 
    CGRect brect = CGRectMake(0, 330, 60, 27); 
    CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect)); 
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [button setFrame:brect]; 
    [button setCenter:centern]; 
    [button setTitle:@"New" forState:UIControlStateNormal]; 
    [self addSubview:button]; 
} 

Le bouton est dessiné sans texte à l'intérieur. Ce n'est que lorsque je touche l'écran qu'il est ensuite dessiné correctement.

Ma solution a été la suivante: Donnez au contrôleur de barre d'onglet deux contrôleurs UIView à contrôler. Ensuite, la force d'un tirage au sort de la seconde, puis revenir à la première:

tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:1]; 
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:0]; 

Cette solution fonctionne, mais il est un hack stupide. Y a-t-il une meilleure manière de faire cela?

+1

Quelle méthode utilisez-vous sur l'UIView pour initialiser et ajouter le bouton? –

Répondre

-1

Le code que vous venez de créer ne semble pas rentrer dans une implémentation drawRect:. Vous devez ajouter ce code à l'implémentation init de vos vues, ou à votre implémentation viewControllers loadView ou viewDidLoad.

Ces deux lignes ne font rien utiles que vous pouvez les laisser:

CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect)); 
[button setCenter:centern]; 

Chaque fois que vous définissez un cadre sur une vue, le centre de vue est implicitement défini sur le point médian des cadres (centre).

+0

downvote sans commentaire? Où ai-je tort? – tonklon

Questions connexes