Domanda

Sto cercando di aggiungere più istanze di UIImageView (s) a un NSMutableArray di NSMutableDictionar (i).

Lo sto facendo, per poter tornare indietro ed estrarre il riferimento UIImageView, per cambiare la posizione di queste immagini.

Sembra che, quando estraggo le informazioni dal Dizionario, restituisca solo un puntatore null ...

Qualche suggerimento su come dovrei implementarlo? Potrebbe esserci un metodo più semplice per memorizzare un elenco di n immagini ed essere in grado di farle riferimento in seguito ....

// (for i = 0 to 30)

UIImageView *newBall = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ball.png"]];
newBall.center = CGPointMake (arc4random() % 280 + 20, arc4random() % 440 + 20);
[self.view addSubview:newBall];

NSMutableDictionary *dictBall = [[[NSMutableDictionary alloc] init] autorelease];
[dictBall setValue:newBall forKey:@"imgBall"];

// the dictionary is then added to the array

[newBall release];

// end for loop

(Sto usando un dizionario, perché memorizzo anche un valore dy / dx per la velocità di cambiamento nei movimenti)

È stato utile?

Soluzione

Il codice sopra non mi sembra OK.

Stai creando un nuovo NSMutableDictionary * dictBall ogni volta attraverso il ciclo. Qualcosa lo trattiene dopo che il ciclo esiste? Non sembra dal tuo codice. Questo potrebbe essere il motivo per cui l'oggetto è nullo.

Sposta questa linea fuori / prima del ciclo for e dovresti andare bene.

Inoltre, sei sicuro di voler archiviare UIViewImage in un dizionario? Perché non solo un ID (basato sul tag) e le coordinate (CGPoint o CGRect)? In questo modo puoi utilizzare il tag per trovare UIimageView tramite il tag e spostarlo dove vuoi? Meno costoso per quanto riguarda la memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top