Creare controlli dinamicamente

di il
9 risposte

Creare controlli dinamicamente

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

9 Risposte

  • Re: Creare controlli dinamicamente

    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.
  • Re: Creare controlli dinamicamente

    Barba59, cosa intendi per creare controlli dinamicamente??
  • Re: 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.
  • Re: Creare controlli dinamicamente

    Mmm abbastanza chiaro (ma non è una tua mancanza nella spiegazione ma mio deficit di terminologia...)
  • Re: Creare controlli dinamicamente

    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.
  • Re: Creare controlli dinamicamente

    E per la loro deallocazione come ci si comporta?
  • Re: Creare controlli dinamicamente

    Dovrebbe pensarci l' Automatic Recerence Counting, dico 'dovrebbe' perchè non sono pratico, forse conviene aprire un thread sull' argomento.
  • Re: Creare controlli dinamicamente

    Non si puo usare la garbage collection?
  • Re: Creare controlli dinamicamente

    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