NSTextField dynamiques par programmation
bofy
Membre
Bonjour
Existe-t-il un moyen de créer des TextField dynamiquement dans une page par programmation (IB est, me semble-t-il, totalement statique) ?
Quelque chose comme :
NSTextField * field;
[field showField:inWindow atLocation:...];
J'ai cherché, mais je n'ai pas trouvé.
Merci
Existe-t-il un moyen de créer des TextField dynamiquement dans une page par programmation (IB est, me semble-t-il, totalement statique) ?
Quelque chose comme :
NSTextField * field;
[field showField:inWindow atLocation:...];
J'ai cherché, mais je n'ai pas trouvé.
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais encore faut-il ne pas le faire n'importe comment :P
Déjà il faut faire un alloc/init ; ensuite, il faut lui définir toutes ses propriétés, donc "frame" et "bounds" (pour l'emplacement).
NSTextField hérite de NSControl, et de NSView
NSRect aFrame=NSMakeRect( ...
NSTextField * myTextField = [[NSTextField alloc] initWithFrame:aframe];
Rien à faire pour afficher paar programmation un textfield !
voici mon code :
[tt]//
// TSTApp.h
// test_06
#import <Cocoa/Cocoa.h>
@class ShowView;
@interface TSTApp : NSObject {
ShowView * showView;
}
-(IBAction)showView:(id)sender;
@end
//
// TSTApp.m
// test_06
#import "ShowView.h"
#import "TSTApp.h"
@implementation TSTApp {
}
- (IBAction) showView:(id)sender {
showView = [[ShowView alloc] initWithWindowNibName:@ShowView];
[showView showWindow:self];
}
@end
//
// ShowView.h
// test_06
#import <Cocoa/Cocoa.h>
@interface ShowView : NSWindowController {
}
@end
//
// ShowView.m
// test_06
#import "ShowView.h"
@implementation ShowView
- (void) awakeFromNib {
NSRect aFrame = NSMakeRect(10,10,10,10);
NSTextField * myTextField = [[NSTextField alloc] initWithFrame:aFrame];
// [aFrame setBackgroundColor:(NSColor *)redColor] [myTextField setBackgroundColor:(NSColor *)redColor];
[myTextField display];
}
@end[/tt]
Où est l'erreur ? Bête comme d'habitude...[tt][/tt]
Je pense que le programme ne va pas deviner tout seul sur quelle fenêtre / sous-vue le mettre :P
Si c'est pour mettre dans une fenêtre directement -> voir "- (id)contentView" de NSWindow
Pour ajouter à une vue -> "- (void)addSubview:(NSView *)aView" de NSView
Mais j'aimerais savoir où on peut trouver cette sorte de documentation, qui ne fasse pas appel à IB ?
Meuh non ...
Tu mets un IBOutlet
Code : IBOutlet NSView * contentView;
connecté dans IB sur la contentView de ta fenêtre
puis tu utilises les méthodes données par Schlum
Tout cela vous paraà®t évident, mais qu'est-ce qui cloche dans mon code ?
Sachant que je ne veux pas utiliser IB ! (En utilisant IB je ne comprend rien à ce que je fais...)
La fenêtre, c'est un minimum... Tu ne peux rien afficher sans fenêtre.
Une fois que tu as la fenêtre, tu obtiens la "contentView" avec la méthode adéquate que j'ai donnée ci-dessus, et tu fais juste "addSubview" avec ta vue dessus. Je ne comprends pas le problème. ???
Mais je veux un peu plus et que ça fonctionne au niveau 1, et je n'y arrive pas.
J'ai dans la mainwindow (niveau 0) un bouton, qui me permet d'ouvrir une fenêtre (niveau 1).
Je sais faire :
showView = [[ShowView alloc] initWithWindowNibName:@ShowView];
[showView showWindow:self];
Ca marche si
@interface ShowView : NSWindowController
Si je mets (et le reste du code de Philippe49)
@interface ShowView : NSObject
rien ne s'affiche, et NSLog ne fournit aucune information.
Ma question est toujours la même : comment créer dynamiquement une interface dans une fenêtre appelée par une autre ?
???
NB pour schlum : si tu ne comprends pas le problème, un code comme celui de Philippe49 me permettrais peut-être de débloquer la situation...
Je veux bien essayer d'atteindre le niveau 1Â ::)
Ce code doit être dans un contrôleur de l'application (voir plus loin) mais ok Â
Appeler ShowView un WindowController prête complètement à confusion, et montre comme ne l'as pas dit Schlum (... ) que tu n'as pas un schéma clair en tête.
Je préfèrerais par exemple ShowWindowController
Il y a en présence :
Le plus simple, c'est que cela soit un IBOutlet de la classe ShowWindowController, connecté dans IB (File Owner's --> Window
Ben forcément. >:D :fouf):
Maintenant le fameux bouton qui déclenche l'ouverture de ta seconde fenêtre doit être connecté à une IBAction d'un contrôleur instancié dans MainMenu.nib
@class ShowWindowController;
#interface Controller : NSObject
{
 ShowWindowController * showWC;Â
}
-(IBAction) openShowWindow:(id) sender;
@end
Introduction to Interface Builder User Guide
merci à tous