2012-04-03 13 views
0

Ich arbeite an einer App, die sich wie eine Fotogalerie verhält, und ich implementiere die Option, damit der Benutzer Fotos aus seiner Galerie löscht. Um dies zu erreichen, habe ich beschlossen, einen unsichtbaren Knopf über jedes Bild zu setzen. Wenn der Benutzer eine Schaltfläche "Bearbeiten" anklickt, werden die ausgeblendeten Schaltflächen zum Löschen über jedes Bild aktiv. Ich benutze zur Vereinfachung das gleiche IBOutlet über jedem der versteckten Schaltflächen, und ich habe jede Schaltfläche in Interface Builder entsprechend gekennzeichnet. Wenn der Benutzer auf die Schaltfläche über dem Bild klickt, wird eine Warnmeldung angezeigt, in der Sie gefragt werden, ob die Datei wirklich gelöscht werden soll. Wenn sie ja klicken, rufe ich removeObjectAtIndex an. Hier ist der Code Ich verwende:iOS: Tagging-Fehler

- (IBAction)deleteButtonPressed:(id)sender { 
    UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete" 
                   message:@"Are you sure you want to delete this photo?" 
                  delegate:self 
                cancelButtonTitle:@"Yes" 
                otherButtonTitles:@"No", nil]; 
    [deleteAlertView show]; 
    int imageIndex = sender.tag; 
    deleteAlertView.tag = imageIndex; 

} 

- (void)deleteAlertView:(UIAlertView *)deleteButtonPressed 
     didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex != [deleteButtonPressed cancelButtonIndex]) { 

     [array removeObjectAtIndex:deleteButtonPressed.tag]; 

    } 
    [self.user setObject:array forKey:@"images"]; 
} 

Der Fehler, ich bin immer int imageIndex = sender.tag; wird hervorgehoben, und stellt fest, „Eigentum tag nicht für das Objekt gefunden Typ __strong id“. Ich habe über diesen Fehler geforscht und finde keine hilfreichen Informationen. Ich bin noch neu im Programmieren, also bin ich mir nicht sicher, wie ich das überhaupt beheben soll. Jede Hilfe wird sehr geschätzt, danke!

Antwort

4

Sie müssen den Absender in den entsprechenden Typ umwandeln. Zum Beispiel int imageIndex = ((UIView*)sender).tag;.

+0

Cool, vielen Dank. Ich habe 'NSLog (@" Absender ist% @ ", Absender);' in meiner deleteButtonPressed-Methode hinzugefügt, und es heißt, dass der Absender UIButton ist. Also habe ich 'int imageIndex = ((UIButton *) sender) .tag;'. Der Fehler ist verschwunden, aber wenn ich in der Alarmansicht auf Ja klicke, passiert nichts. Soll ich dafür eine andere Frage stellen? – John

+1

Joey, du hast deine Tastennamen in der falschen Reihenfolge angegeben und (nach den Richtlinien der iOS-Benutzeroberfläche) sind sie auch schlecht beschriftet. Ihr Aufruf für die Alarmansicht sollte eher wie folgt aussehen: delegate: self cancelButtonTitle: @ "Cancel" otherButtonTitles: @ "Delete", nil'. Der eigentliche logische Fehler besteht darin, dass Ihre Schaltfläche "Ja" als Abbrechen-Schaltfläche gekennzeichnet ist, und Ihre Delegate-Methode prüft, ob die gedrückte Schaltfläche * nicht * die Abbrechen-Schaltfläche war. Sie können die Delegate-Methode jedoch so lassen, wie sie ist: Tauschen Sie die Reihenfolge Ihrer Schaltflächentexte beim Einrichten der Warnmeldungsansicht aus und benennen Sie sie im Idealfall deutlicher. –

+0

@Noah Witherspoon Vielen Dank, ich habe das jetzt geändert. Das Problem ist immer noch vorhanden, sollte ich noch eine Frage stellen, warum das Bild nicht gelöscht wird? – John