Frage

Ich habe eine ansichtsbasierte NSTableView, die über Bindungen gefüllt ist.Meine textFields & imageViews sind an die objectValue-Eigenschaften von NSTableCellView gebunden.

Wenn ich eine Bearbeitungs- / Info-Schaltfläche in meiner NSTableCellView haben möchte:

  1. Wer sollte das Ziel der Aktion der Schaltfläche sein?

  2. Wie würde das Ziel den Objektwert erhalten, der der Zelle zugeordnet ist, in der sich die Schaltfläche befindet?

    Ich möchte letztendlich ein Popover / Blatt basierend auf dem objectValue anzeigen.

War es hilfreich?

Lösung

Ihre Controller-Klasse kann das Ziel sein.So erhalten Sie den Objektwert:

- (IBAction)showPopover:(id)sender {
    NSButton *button = (NSButton *)sender;
    id representedObject = [(NSTableCellView *)[button superview] objectValue];
}

Oder verwenden Sie eine Unterklasse von NSTableCellView, machen Sie die Zellenansicht zum Ziel der Aktion der Schaltfläche und rufen Sie [self objectValue] auf, um das Objekt abzurufen.

Andere Tipps

Ich habe eine zusätzliche Antwort gefunden: Die obige Antwort scheint davon auszugehen, dass Sie Bindungen in Ihrer Tabellenansicht verwenden.Da ich eine Art Noob bin, habe ich einen Weg gefunden, die Schaltfläche in der Zelle der Tabellenansicht abzurufen.

- (IBAction)getCellButton:(id)sender {
     int row = [xmlTable rowForView:sender];
}

Wenn Sie auf die Schaltfläche in der Zeile klicken, muss die Zeile nicht ausgewählt sein.Es wird der int-Wert der Zeile zurückgegeben, der mit einer Datenquelle in einem Array ohne Bindungen übereinstimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top