Пользовательское окно «О приложении» с Mac Catalyst

Изменить окно «О приложении» для Mac Catalyst? Как это делается?


person Bosse Nilsson    schedule 18.03.2020    source источник


Ответы (1)


Что-то вроде этого:

#if targetEnvironment(macCatalyst)
extension AppDelegate {
override func buildMenu(with builder: UIMenuBuilder) {
    guard builder.system == .main else { return }

    // override about button
    builder.replaceChildren(ofMenu: .about) { (oldChildren) -> [UIMenuElement] in
        let menuElement = oldChildren.first
        if let uiCommand = menuElement as? UICommand {
            let aboutUICommand = UICommand(title: uiCommand.title,
            action: #selector(aboutApp(_:)))
            return [aboutUICommand]
        } else {
            return oldChildren
        }
    }
}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return super.canPerformAction(action, withSender: sender)
}

override func target(forAction action: Selector, withSender sender: Any?) -> Any? {
    if action == #selector(aboutApp) {
        return self
    } else {
        return nil
    }
}

@objc func aboutApp(_ selector: Any?) {
    guard let aboutTVC = AboutViewController.createInstance() else { return; }
    rootViewController?.present(aboutTVC, animated: true, completion: nil)
} 
} 
#endif
person Balki    schedule 25.03.2020
comment
Спасибо большое! Мне удалось связать пункт меню «О программе» с модальным представлением. Можно ли также получить представление «О программе» как отдельное окно (за пределами окна приложения)? Стандартное окно отдельно от меню приложения. - person Bosse Nilsson; 25.03.2020
comment
Да, но вам нужно включить многооконный режим для вашего приложения и использовать uiscenedelegate для управления окнами. - person Balki; 27.03.2020