¿Cómo puedo cerrar una ventana emergente de extensión de la aplicación Safari mediante programación?

Estoy creando una extensión de aplicación Safari usando XCode 8.3 y Swift 3, siguiendo elGuía de programación de la extensión de la aplicación Safari. La extensión incluye unpopover que aparece cuando se hace clic en el elemento de la barra de herramientas de la extensión. La vista emergente contiene algunos botones vinculados a acciones que el usuario puede realizar.

Quiero hacer clic en uno de estos botones para cerrar el popover después de que se haya realizado su acción. De forma predeterminada, al hacer clic en cualquier lugar fuera de un popover se cierra, pero no he podido encontrar ninguna otra forma de cerrar el popover, ya sea en la guía o en eldocs.

Yo sé esoNSPopover tiene unperformClose método, pero no parece haber una manera de acceder al popover en sí desde la extensión: la extensión de la aplicación solo le permite proporcionar unSFSafariExtensionViewController, cuyos contenidos aparecen mágicamente dentro del popover.

También he intentado usardismissViewController como se describe enesta respuesta de StackOverflow, pero en mi controlador de vistaself.presenting siempre es nulo yself.dismissViewController(self) simplemente bloquea la extensión con el mensaje:

dismissViewController:: Error: maybe this view controller was not presented?.

Por último, noté unpregunta relacionada sobre programáticamenteapertura el elemento emergente de la barra de herramientas ha quedado sin respuesta en los últimos 6 meses. Esto me lleva a sospechar que Apple simplemente puede tener límites estrictos sobre cómo se puede abrir y cerrar el popover. Incluso si este es el caso, sería bueno saber con certeza cuáles son las limitaciones.

Respuestas a la pregunta(1)

Su respuesta a la pregunta