2009-07-31 3 views
30

J'apprends comment développer sur l'iPhone, j'ai acheté un livre intitulé Beginning iPhone 3 development Exploring the SDK. Après avoir mordu, j'ai décidé de laisser tomber Interface Builder. Je continue de concevoir toutes mes vues dans IB, mais j'écris tout en code et j'utilise uniquement le fichier nib pour obtenir les images des contrôles.iPhone Dev - Créer UIButton manuellement

Donc maintenant je dois faire un UIButton, et la documentation est différente des autres contrôles. J'ai essayé d'utiliser initWithFrame:, et theres cette autre méthode buttonWithType: qui je suppose est autoreleased, mais de toute façon je ne pouvais pas obtenir un bouton pour apparaître sur l'écran. Est-ce que quelqu'un pourrait écrire un peu de code qui crée localement un bouton avec un titre que je peux changer que je peux ensuite ajouter à mes vues sous-vues et relâcher pour que je puisse voir comment c'est fait?

Répondre

83

Je vais essayer quelque chose comme ceci:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    myButton.frame = CGRectMake(20, 20, 200, 44); // position in the parent view and set the size of the button 
    [myButton setTitle:@"Click Me!" forState:UIControlStateNormal]; 
    // add targets and actions 
    [myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    // add to a view 
    [superView addSubview:myButton]; 

Avertissement: Il suffit de taper ce ici. Je n'ai pas accès à mon Mac pour le moment, donc je ne peux pas le tester.

P.S. Une raison particulière de ne pas utiliser Interface Builder? Juste curieux.

+1

En supposant que le sélecteur 'buttonClicked:' existe, c'est parfaitement valide et c'est un bon moyen de s'y prendre. +1 – Tim

+7

Je n'aime pas IB parce que c'est comme une grosse boîte noire et je ne peux pas voir ce qui se passe et ça complique les choses ... La seule chose pour laquelle je pense que c'est utile est la conception de l'interface. Est-ce que myButton est libéré? Cela fonctionnerait-il aussi si je le faisais UIButton * myButton = [[UIButton alloc] initWithFrame: ...]; .. mais alors comment puis-je définir le type de bouton en lecture seule .. – mk12

+0

Et je ne pouvais pas faire myButton.titleLabel.text = @ "Click Me!" au lieu de setTitle forState? – mk12

Questions connexes