Creare controlli dinamicamente

di Anonimizzato9942 il
9 risposte
Finora sono riuscito a inserire nello storyboard pulsanti o immagini a design-time. Come si fa per crearli dinamicamente?

9 Risposte

  • Uhm... ho provato a cercare in rete con un miscuglio delle seguenti chiavi di ricerca: iOS dynamic button programmatically gui ed il seguente codice mi sembra degno di nota:

    http://stackoverflow.com/questions/5017865/ios-dynamic-buttons
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
        // Override point for customization after application launch.
    
        UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button1.frame = CGRectMake(0.f, 0.f, 50.f, 50.f);
        [button1 setTitle:@"1" 
                 forState:(UIControlState)UIControlStateNormal];
        [button1 addTarget:self
                    action:@selector(goToFirstTrailer:) 
          forControlEvents:(UIControlEvents)UIControlEventTouchDown];
        imageView.userInteractionEnabled = YES; // <--- this has to be set to YES
        [imageView addSubview:button1];
        [self.window makeKeyAndVisible];
    
        return YES;
    }
    Prova anche a dare un occhiata ai link seguenti:

    http://stackoverflow.com/questions/8167647/dynamic-button-creation-on-request-by-user-ios
    http://www.wmdeveloper.com/2010/07/create-uiview-uilabel-and-uibutton.html

    Ciao, g.
  • Barba59, cosa intendi per creare controlli dinamicamente??
  • Le seguenti sono tutte espressioni usate intercambiabilmente:

    * Creare controlli dinamicamente
    * Creare controlli a runtime
    * Creare controlli da programma (programmatically in inglese)

    che indicano la possibilità di creare un controllo, per esempio un bottone, una label, una textbox etc. etc. durante l'esecuzione del programma.
    L'alternativa è la creazione del controllo mentre si sviluppa il programma (normalmenet attraverso l'ambiente integrato per esempio facendo un drag&drop del controllo sul form).

    La creazione di un controllo dinamicamente a volte è una strada obbligata. Per esempio, supponi che tu faccia un programma dove l'utente specifica quante palline desidera vedere rimbalzare. In tal caso non puoi pre-istanziare le palline mentre scrivi il codice perchè non sai quante te ne verranno richieste, ma devi crearle a tempo di esecuzione quando l'utente ti dice quante ne vuole.

    Ciao, g.
  • Mmm abbastanza chiaro (ma non è una tua mancanza nella spiegazione ma mio deficit di terminologia...)
  • Ciao GianmariaLari
    Grazie per aver indicato gli esempi in rete, e per la spiegazione che è molto chiara.

    Tornando agli esempi mi chiedo come mai sia così difficile trovare degli esempi semplici in rete! A volte ti basterebbe un esempio di tre righe e ti tocca frugare in un mucchio di codice astruso.

    Comunque sono riuscito a scrivere un esempio in cui una immagine viene replicata un centinaio di volte sullo schermo:
    
    UIImage* image = [UIImage imageNamed:@"Sphere_blue_100x100.png"];
    for(int i = 0; i < 100; ++i)
    {
       UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
       imageView.center = CGPointMake((50 * i) % 500, 10 * i); 
       [self.view addSubview:imageView];    
    }
    
    Questo pezzo di codice l' ho scritto dentro la funzione 'viewDidLoad' nel file 'viewController.m'. Prima avevo trascinato nel progetto un file 'Sphere_blue_100x100.png'. Il risultato è questo:



    Come vedi si tratta proprio di poche righe.
  • E per la loro deallocazione come ci si comporta?
  • Dovrebbe pensarci l' Automatic Recerence Counting, dico 'dovrebbe' perchè non sono pratico, forse conviene aprire un thread sull' argomento.
  • Non si puo usare la garbage collection?
  • Non sono riuscito a capirlo chiaramente, so solo che quando crei un nuovo progetto ti propone l' automatic reference counting. Nelle opzioni del progetto ci sono alcune voci riguardanti il garbage collection, ho provato ad abilitarle ma ottengo errori col linker.
Devi accedere o registrarti per scrivere nel forum
9 risposte