Ich verwende die doubleClickAction
eines NSTableView
, um ein NSPopover
anzuzeigen. Etwas wie dies:
NSInteger selectedRow = [dataTableView clickedRow];
NSInteger selectedColumn = [dataTableView clickedColumn];
// Wenn nichts ausgewählt wurde, können wir nichts anzeigen.
if(selectedRow < 0 || selectedColumn < 0)
{
NSLog(@"Ungültige Auswahl (%ld,%ld)", selectedRow, selectedColumn);
return;
} // Ende der Auswahl war nicht möglich
// Konfigurieren unseres ViewController, sicherstellen, dass wenn bereits ein Popover angezeigt wurde, dass wir dieses zuerst beenden. Schließlich das neue Popover erstellen und anzeigen.
DataInspectorViewController * controller =
[[DataInspectorViewController alloc] initWithNibName: @"DataInspectorViewController"
bundle: nil];
if(nil != dataPreviewPopover)
{
[dataPreviewPopover close];
} // Ende des Popovers war bereits sichtbar
dataPreviewPopover = [[NSPopover alloc] init];
[dataPreviewPopover setContentSize:NSMakeSize(400.0f, 400.0f)];
[dataPreviewPopover setContentViewController:controller];
[dataPreviewPopover setAnimates:YES];
[dataPreviewPopover showRelativeToRect: [dataTableView frameOfCellAtColumn: selectedColumn row: selectedRow]
ofView: dataTableView
preferredEdge: NSMinYEdge];
Was einwandfrei funktioniert. Meine Popovers werden erstellt und entfernt, wenn ich auf die Zellen doppelklicke. Das Problem ist, dass ich möchte, dass das Popover verschwindet, wenn ich irgendwo außerhalb davon klicke (wie ein einfacher Klick auf eine andere Zelle). Ich habe herumgesucht, aber ich kann einfach nicht herausfinden, wie man es macht.
Das ist etwas, was ich vermute, dass in ein Popover eingebaut ist, (ich bin mir ziemlich sicher, dass es in der iOS UIPopoverController
-Klasse war), also frage ich mich nur, ob ich etwas Einfaches übersehen habe.