2009-08-17 6 views
0

Juste créé un nouveau projet dans Xcode (View based), et essayé de créer un bouton comme celui-ci par programmation, mais il ne s'affiche pas. Pourquoi pas?Pourquoi ce bouton n'apparaît-il pas? iPhone-dev

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 

    CGRect rect = CGRectMake(0, 20,100,20); 
    UIButton *button = [[UIButton alloc] initWithFrame:rect]; 

    [viewController.view addSubview:button]; 

    [window makeKeyAndVisible]; 
} 

Répondre

2

Mieux que vous n'utilisez pas le délégué de l'application pour configurer votre vue, il suffit de charger votre première vue racine. Donc, changer applicationDidFinishLaunching du appDelegate: retour à

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 

    [window makeKeyAndVisible]; 
} 

Et dans ta vue qu'il appelle et de punch dans ce code, qui va créer votre UIButton pour vous. J'ai également ajouté le changement de la couleur de fond pour m'assurer que vous chargiez cette vue.

- (void)loadView { 
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
    self.view.backgroundColor = [UIColor redColor]; 

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 20, 100, 20)]; 
    [button setTitle:@"UIButton!" forState:UIControlStateNormal]; 
    [button setReversesTitleShadowWhenHighlighted:YES]; 
    [button setShowsTouchWhenHighlighted:YES]; 

    [self.view addSubview:button]; 
    [button release]; 
} 

En général, je préfère construire programatically mon point de vue que je peux passer outre drawRect: que vous ne pouvez pas faire à l'intérieur InterfaceBuilder afaik.

-5

Ne faites pas cela. Utilisez le constructeur d'interface.

+0

Les cotes de baisse sont un peu sévères, mais je suis d'accord que ce n'est pas une bonne réponse. Je trouve l'Interface Builder beaucoup trop maladroit pour une personnalisation importante. C'est plus de problèmes que ça en vaut la peine. – Amagrammer

0

Etes-vous sûr de ne pas montrer? il pourrait juste être transparent et vous ne pouvez pas le voir, essayez les paramètres de la couleur de fond des boutons à quelque chose ...

+0

J'ai essayé de changer la couleur d'arrière-plan du bouton avec setBackgroundColor, mais cela n'a fait aucune différence. – quano

+0

essayez d'ajouter le bouton après avoir rendu la fenêtre visible, que se passe-t-il alors? – Daniel

+0

J'ai essayé de l'ajouter à la fenêtre, et vous pouvez le voir. C'est juste un rectangle, et pas interactif. – quano

1

Essayez de créer votre bouton avec [UIButton buttonWithType: UIButtonTypeCustom] ou [UIButton buttonWithType: UIButtonTypeRoundedRect]

Je trouve ceux qui travaillent beaucoup mieux. Ils sont certainement beaucoup plus auto-documentés.