Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

456
Views
Mostrar y ocultar la ventana en lugar de cerrar la aplicación al hacer clic en la aplicación Cocoa

He estado tratando de mostrar la ventana oculta al cerrar (botón rojo), haga clic en la ventana. Lo que me gustaría hacer es ocultar la ventana y cuando un usuario vuelva a hacer clic en mi aplicación, se volverá a mostrar.

Gracias de antemano a todos los desarrolladores que den una respuesta. Soy nuevo en las aplicaciones Cocoa. Soy desarrollador de iOS, por lo que no tengo mucho conocimiento sobre las aplicaciones de cacao.

Traté de ocultar ( :) método y orderOut ( :) método también. pero no funciona.

 class ViewController : NSViewController, NSWindowDelegates { override func viewDidAppear() { self.view.window?.delegate = self } func windowShouldClose(_ sender: NSWindow) -> Bool { //NSApplication.shared.terminate(self) //NSApp.hide(self) //self.view.window?.orderOut(sender) return false } }

Quiero crear una aplicación de temporizador que se ejecute en segundo plano si el usuario hace clic en cerrar, se ocultará en lugar de finalizar. y cuando vuelva a hacer clic en el menú del muelle, volverá a abrir la ventana.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

No me gusta mucho el desarrollo de Mac OS, pero creo que deberías heredar de NSWindowController así:

 class MyWindowController: NSWindowController, NSWindowDelegate { func windowShouldClose(_ sender: NSWindow) -> Bool { NSApp.hide(nil) return false } }

Luego, solo necesita abrir su guión gráfico principal (o el nombre que tenga), elegir Window Controller y configurar su MyWindowController en él:

ingrese la descripción de la imagen aquí

Probé y funcionó para mí.

over 4 years ago · Santiago Trujillo Report

0

He encontrado solución. Gracias a la sugerencia de @Silvester de presentar NSViewController. En el evento de clic de botón:

 @IBAction func onButtonClick(_ sender: VSButton) { let animator = ReplacePresentationAnimator() let vc = self.storyboard?.instantiateController(withIdentifier: "identifier") as! yourVC present(vc, animator: animator) }

Clase de animador personalizado:

 class ReplacePresentationAnimator: NSObject, NSViewControllerPresentationAnimator { func animatePresentation(of viewController: NSViewController, from fromViewController: NSViewController) { if let window = fromViewController.view.window { NSAnimationContext.runAnimationGroup({ (context) -> Void in fromViewController.view.animator().alphaValue = 0 }, completionHandler: { () -> Void in viewController.view.alphaValue = 0 window.contentViewController = viewController viewController.view.animator().alphaValue = 1.0 }) } } func animateDismissal(of viewController: NSViewController, from fromViewController: NSViewController) { if let window = viewController.view.window { NSAnimationContext.runAnimationGroup({ (context) -> Void in viewController.view.animator().alphaValue = 0 }, completionHandler: { () -> Void in fromViewController.view.alphaValue = 0 window.contentViewController = fromViewController fromViewController.view.animator().alphaValue = 1.0 }) } } }

Esto funcionará perfectamente con Silvester MyWindowController. Gracias.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!