Frage

Ich habe eine Tabelle View-Controller mit benutzerdefinierten Zellen haben. In diesen Zellen hinzugefügt ich eine Taste für jede der Zellen. Was ich möchte, dass es das ist, wenn ich diesen Knopf drücke es mit mehr Informationen über die Zelle, andere der Ansicht eine neue Ansicht anzuzeigen, dass ich von DidSelectRowAtIndexPath bekommen.

Ich weiß, es ist jetzt eine schwierige Frage. Ich habe gesehen, dass die Taste eine Aktion auf Interface hat (aufsetzt vielleicht), aber wie verknüpfe ich es, in welchen Code. wo soll ich erklären, den Code, den Griff dieses Ereignis?

Ich habe ohne Antwort in anderen Foren gepostet, hoffen, dass dies funktionieren würde.

Danke. Gian

War es hilfreich?

Lösung

Ich würde wahrscheinlich UIButton Unterklasse eine Instanz von NSIndexPath zu haben. Auf diese Weise wird jedes einzelne UIButton in einem UITableViewCell kann „wissen“, wo es in der Tabellenansicht ist, so dass, wenn Sie die Taste drücken, können Sie eine Methode aufrufen, die eine NSIndexPath nimmt und schiebt eine neue Ansicht, ähnlich dem, was Sie in -didSelectRowAtIndexPath: tun aber mit dem anderen Ansicht statt (vielleicht gibt sie einen beschreibenden Methodennamen wie -didPressButtonAtIndexPath:).

Statt der Interface Builder verwenden, dies zu tun, sollten Sie eine Methode, um die UIButton Unterklasse selbst hinzufügen, dass wiederum ein Verfahren auf Ihrem View-Controller aufruft. Dann wird für jeden UIButton, können Sie die UIControl Methode -addTarget:action:forControlEvents: verwenden. Haben die UIButton Aufruf seine eigene Methode, die der Steuerung Methode aufruft. Ihre Lösung könnte etwa wie folgt aussehen:

// MyButton.h
@interface MyButton : UIButton {
    NSIndexPath *myIndexPath;
    MyViewController *viewController;
}

- (void)didPressButton;
@end

// MyViewController.h
@interface MyViewController { }
- (void)didPressButtonAtIndexPath:(NSIndexPath *)indexPath;
@end

Wenn Sie dann Ihre Zellen bauen, für jede Taste fügen Sie Anruf:

[button addTarget:button 
           action:@selector(didPressButton)
 forControlEvents:UIControlEventTouchDown];

Und schließlich implementieren -didPressButton zu wie folgt aussehen:

- (void)didPressButton {
   [controller didPressButtonAtIndexPath:myIndexPath];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top