如何在 Swift 中实现 NSWindowRestoration?

     2023-03-05     260

关键词:

【中文标题】如何在 Swift 中实现 NSWindowRestoration?【英文标题】:How to implement NSWindowRestoration in Swift? 【发布时间】:2014-06-10 00:50:12 【问题描述】:

我尝试在非基于文档的应用程序中在 Swift 中实现 NSWindowRestoration 协议。然而,restoreWindowWithIdentifier 方法永远不会在应用程序启动时被调用。谁能指出我的错误?

这是代码的子集(编译和运行良好):

class AppDelegate: NSObject, NSApplicationDelegate, NSWindowRestoration 

  var windowController : MyWindowController?

  func applicationDidFinishLaunching(aNotification: NSNotification?) 
    windowController = MyWindowController(windowNibName:"ImageSequenceView")
  

  class func restoreWindowWithIdentifier(identifier: String!, state: NSCoder!, completionHandler: ((NSWindow!,NSError!) -> Void)!) 
    NSLog("restoreWindowWithIdentifier: \(identifier), state: \(state)")
  

 

class MyWindowController: NSWindowController 

  override func windowDidLoad() 
    super.windowDidLoad();
    window.restorationClass = AppDelegate.self
  

提前致谢!

【问题讨论】:

出于好奇,当您交换super.windowDidLoad() 的顺序并设置window.restorationClass 时会发生什么。 抱歉,长途旅行。刚试过,但没有任何作用...... 当我使用 self.dynamicType 并确保我的系统首选项设置为恢复 Windows restoreWindowWithIdentifier 时,我的班级被调用。 【参考方案1】:

你需要设置一个恢复类,一个标识符:

class MyWindowController: NSWindowController 
    override func windowDidLoad() 
        super.windowDidLoad()

        self.window?.restorationClass = type(of: self)
        self.window?.identifier = "MyWindow"
    


extension MyWindowController: NSWindowRestoration 
    static func restoreWindow(withIdentifier identifier: String, state: NSCoder, completionHandler: @escaping (NSWindow?, Error?) -> Void) 
        if identifier == "MyWindow" 
            // Restore the window here
        
    

当然你也可以让另一个类恢复窗口,就像你试过的那样。在这种情况下,您需要将AppDelegate.self 分配为restorationClass

另外,请注意window restoration setting now defaults to "off",无论出于何种愚蠢的原因。

【讨论】:

系统偏好设置窗口恢复设置默认为关闭也引起了我的注意。很容易迷失在代码中,想知道为什么没有按您预期的方式工作,直到您意识到这个复选框控制了一切。

这是如何在 swift 4 中实现的?

】这是如何在swift4中实现的?【英文标题】:Howisthisimplementedinswift4?【发布时间】:2018-08-0413:25:33【问题描述】:我有这个link用于表格视图中的下拉搜索栏。我能够使用此代码在tableview中实现搜索栏searchController.searchResultsUpdater=s... 查看详情

mailcore2如何在swift中实现它

】mailcore2如何在swift中实现它【英文标题】:mailcore2howtoimplementitinswift【发布时间】:2018-02-2212:16:13【问题描述】:我厌倦了在这里https://github.com/MailCore/mailcore2/blob/master/build-mac/README.md遵循这些说明,但我不明白或不知道如何在... 查看详情

如何在 Swift 中实现全球化?

】如何在Swift中实现全球化?【英文标题】:HowtomakesomethingglobalinSwift?【发布时间】:2014-06-0818:07:13【问题描述】:我在viewDidLoad函数中创建了一个UILabel。然后,我有一个在viewDidLoad函数之外的函数。我需要能够访问UILabel。我知... 查看详情

如何在 inputAccessoryView [Swift] 中实现滚动视图

】如何在inputAccessoryView[Swift]中实现滚动视图【英文标题】:HowtoimplementascrollViewinsideinputAccessoryView[Swift]【发布时间】:2020-04-2714:48:47【问题描述】:在我的swift应用程序中,我正在使用inputActivityView,非常努力,我的想法是在该... 查看详情

Swift 3:如何在项目中实现 Cocoapods?

】Swift3:如何在项目中实现Cocoapods?【英文标题】:Swift3:HowtoimplementCocoapodsintoproject?【发布时间】:2017-02-1216:22:20【问题描述】:我是swift3和cocoapods的初学者,我想为我的项目实现这个https://github.com/luowenxing/MTImagePicker图像选择... 查看详情

如何在 Swift iOS 中实现 iMessage 渐变?

】如何在SwiftiOS中实现iMessage渐变?【英文标题】:HowcanIimplementtheiMessagegradientinSwiftiOS?【发布时间】:2020-12-2423:40:30【问题描述】:我正在努力实现的目标我正在尝试在SwiftiOS中实现渐变气泡效果,其中顶部的聊天气泡颜色较浅... 查看详情

如何在 Objective-C 和 Swift 中实现“didSelectButtonInCellAtIndexPath:”?

】如何在Objective-C和Swift中实现“didSelectButtonInCellAtIndexPath:”?【英文标题】:Howtoimplement"didSelectButtonInCellAtIndexPath:"inObjective-CandSwift?【发布时间】:2018-08-2707:13:41【问题描述】:我熟悉“UITableViewDelegate”。-(void)tableVie 查看详情

如何在 Swift 中实现一个管理 UserDefaults 的键值对的通用结构?

】如何在Swift中实现一个管理UserDefaults的键值对的通用结构?【英文标题】:HowcanIimplementagenericstructthatmanageskey-valuepairsforUserDefaultsinSwift?【发布时间】:2021-02-0921:22:15【问题描述】:如何在Swift中实现一个管理UserDefaults映射的结... 查看详情

IQKeyboardManagerSwift pod install : 如何在 swift 中实现完成按钮操作

】IQKeyboardManagerSwiftpodinstall:如何在swift中实现完成按钮操作【英文标题】:IQKeyboardManagerSwiftpodinstall:HowtoimplementDonebuttonactioninswift【发布时间】:2017-09-1204:20:50【问题描述】:我正在使用以下库(有助于管理多个文本字段)pod\'IQKe... 查看详情

如何使用 Swift 在 CustomCell 中实现 inputAccessoryView 到 UITextField?

】如何使用Swift在CustomCell中实现inputAccessoryView到UITextField?【英文标题】:HowtoimplementinputAccessoryViewtoUITextFieldinCustomCellusingSwift?【发布时间】:2017-11-0815:59:30【问题描述】:我有一个带有自定义单元格的tableView,它与配置的自己... 查看详情

如何在 quickblox (Swift, iOS, xcode) 中实现发送图片

】如何在quickblox(Swift,iOS,xcode)中实现发送图片【英文标题】:Howtoimplementsendingimagesinquickblox(Swift,iOS,xcode)【发布时间】:2016-02-2723:01:41【问题描述】:我已经有一个应用程序,并实施了Quickblox。到目前为止,我只有消息发送。如何... 查看详情

如何在 swift 中实现类似 Dropbox 的进度视图?

】如何在swift中实现类似Dropbox的进度视图?【英文标题】:HowdoIachievethisDropboxlikeprogressviewinswift?【发布时间】:2015-09-1105:46:54【问题描述】:DropboxiOS应用有一种非常酷的视图层次结构,当从它们的“文件”tableView中选择一行时... 查看详情

如何使用 Swift 3 for iOS 在 ViewController.swift 中实现 UICollectionView

】如何使用Swift3foriOS在ViewController.swift中实现UICollectionView【英文标题】:HowtoimplementUICollectionViewwithinViewController.swiftusingSwift3foriOS【发布时间】:2017-03-2517:07:29【问题描述】:我正在和BrianVoong一起学习他的教程:https://youtu.be/kecV6... 查看详情

如何使用原生崩溃报告在 Swift 4 中实现异常/错误处理?

】如何使用原生崩溃报告在Swift4中实现异常/错误处理?【英文标题】:HowtoimplementException/ErrorHandlinginSwift4withnativeCrashReporting?【发布时间】:2019-01-1107:51:32【问题描述】:我想在我的iOSSwift4代码中实现原生崩溃报告(不推荐使用... 查看详情

如何在 Swift 中实现收藏夹或点赞按钮

】如何在Swift中实现收藏夹或点赞按钮【英文标题】:HowdoIimplementaFavoritesorLikebuttoninSwift【发布时间】:2016-08-2306:20:04【问题描述】:我想添加一个赞\\收藏Button。一旦您单击最喜欢的button,图像将变为全红心并放置徽章(WhenStar\... 查看详情

swift之深入解析如何在swift中实现状态机(代码片段)

一、状态机的定义①什么是状态机?我们直接使用维基百科上的定义:Afinite-statemachine(FSM)orfinite-stateautomaton(FSA,plural:automata),finiteautomaton,orsimplyastatemachine,isamathematicalmodelofcomputation.简而言之:通常称作的状态机是有限状态机的简... 查看详情

Xcode6/Swift - 如何在多个视图控制器中实现 iAdBannerView?

】Xcode6/Swift-如何在多个视图控制器中实现iAdBannerView?【英文标题】:Xcode6/Swift-HowtoimplementaniAdBannerViewinmultipleviewcontrollers?【发布时间】:2014-10-1611:59:12【问题描述】:在我开始之前,我知道这个问题已经被问过很多次了,但是... 查看详情

如何在 iOS(Swift 或 Objective C)中实现这样的套接字调用?

】如何在iOS(Swift或ObjectiveC)中实现这样的套接字调用?【英文标题】:HowcanIachieveasocketcalllikethisiniOS(SwiftorObjectiveC)?【发布时间】:2018-10-1515:29:59【问题描述】:这是Java中用于进行套接字调用的代码,但我想知道如何在iOS(Swif... 查看详情