Domanda

Ho un'app in cui devo tenere traccia dell'ultimo pulsante premuto in ogni momento. Quindi ho implementato questo metodo:

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

Quindi quando viene premuto un pulsante, chiamo:

[self lastButtonPressed = xButton];

Funziona perfettamente. Ma ora sto lavorando per archiviare tutti gli oggetti nella mia app quando la vista scompare o si chiude per poi inarcheggiare e Uibutton non è conforme a NSCOPYING o NSCODING. Ho letto che posso sottoclasse Uibutton e definire i metodi ma sono bloccato lì.

Quindi, quando la mia app si chiude o la vista scompare, voglio salvare l'ultimo abbondante.

Ho creato una nuova classe chiamata Bidpersistence per tenere i miei dati archiviati. Nel controller di visualizzazione della mia app ho un metodo Savedata in cui salvo i miei dati. Ricevo un errore sull'ultima riga mostrata di seguito perché Uibutton non è 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;

Qualsiasi aiuto apprezzato.

È stato utile?

Soluzione

Sembra che non devi salvare il pulsante reale, sappi solo quale è stato premuto per ultimo. Per questo è possibile utilizzare NSUSERDEFAULS, il che è utile per salvare piccoli bocconcini senza dover impostare dati core o simili. Quello che consiglierei è di dare a ciascun pulsante un tag unico (in Interface Builder, solo un int), quindi farlo:

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

Successivamente è possibile recuperare il pulsante utilizzando viewWithTag:.

Altri suggerimenti

Non puoi davvero sottoclasse UIButton. Non è una singola classe ma, come si suol dire, un cluster di classe che UIKit Seleziona in base a UIButton'S + (id)buttonWithType:(UIButtonType)buttonType.

Detto questo, (appare) è conforme a NSCoding (solo leggendo i documenti; non so come il NSCoding roba funziona.)

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