Question

J'ai une application où j'ai besoin de suivre la dernière touche pressée à tout moment.J'ai donc mis cette méthode:

-(void) lastButtonPressed: (id)sender
{
    lastButtonPressed = (UIButton *)sender;
}

Puis, quand tout bouton enfoncé j'appelle:

[self lastButtonPressed = xButton];

Fonctionne parfaitement.Mais maintenant, je suis en train de travailler sur l'archivage de tous les objets de mon application lors de l'affichage disparaît ou se ferme alors désarchiver et UIButton n'est pas conforme à NSCopying ou NSCoding.J'ai lu que je peux sous-classe UIButton et de définir les méthodes, mais je suis coincé là-bas.

Alors, quand mon application se ferme ou à la vue disparaît je veux sauver la lastButtonPressed.

J'ai créé une nouvelle classe appelée BIDPersistence pour tenir mes données archivées.Dans mon application-vue-contrôleur, j'ai une méthode saveData où je sauvegarder mes données.J'obtiens une erreur sur la dernière ligne indiqués ci-dessous parce que UIButton n'est pas conforme.

BIDPersistence *persistence = [[BIDPersistence alloc] init];
    persistence.field1 = [NSNumber numberWithDouble:double1];
    persistence.field2 = [NSNumber numberWithDouble:double2];
    persistence.field3 = display.text;
    persistence.field4 = tapeDisplay.text;
    persistence.field5 = [NSNumber numberWithBool:continueTape];
    persistence.field6 = [NSNumber numberWithBool:newDouble];
    persistence.field7 = lastButtonPressed;

Toute aide appréciée.

Était-ce utile?

La solution

On dirait que vous n'avez pas besoin de sauvegarder le bouton actuel, savez simplement lequel on a appuyé le dernier.Pour cela, vous pouvez utiliser NSUserDefault, ce qui est bon pour sauver de petites tarits sans avoir à configurer des données de base ou similaires.Ce que je recommanderais, c'est de donner à chaque bouton une balise unique (dans le constructeur d'interface, juste un int) puis faites ceci:

[[NSUserDefaults standardUserDefaults] setInt:[lastButton tag] forKey:@"LastButtonPressed"];

Plus tard, vous pouvez récupérer le bouton à l'aide de viewWithTag:.

Autres conseils

Vous ne pouvez pas vraiment sous-classe UIButton.Ce n'est pas une classe unique, mais, comme ils disent, une classe cluster UIKit sélectionne basé sur UIButton's + (id)buttonWithType:(UIButtonType)buttonType.

Cela dit, il ne (être) à se conformer à NSCoding (il suffit de lire les docs;Je ne sais pas comment le NSCoding œuvres de trucs.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top