Ошибка: невозможно вызвать значение нефункционального типа - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь сделать расширение регистрации UIViewController nib.

Так что вместо PastOrdersViewController(nibName: "PastOrdersViewController", bundle: nil) мы можем сделать что-то вроде

extension UIViewController {
 func loadNib(vc: UIViewController,nibName: String) -> UIViewController{
        return vc(nibName: nibName, bundle: nil)//Error: Cannot call value of non-function type 'UIViewController'
    }
}

Однако я получаю следующую ошибку: -

Ошибка: невозможно вызвать значение нефункционального типа 'UIViewController'

1 Ответ

0 голосов
/ 08 сентября 2018

Ошибка возникает из-за того, что параметр vc указывает на экземпляр UIViewController, и из-за того, как метод выглядит так, как вы хотите вместо этого вызвать инициализатор в классе контроллера.

Вы можете использовать Self и пропустить первый аргумент, это сделает метод loadFromNib действительно простым. Другая оптимизация, которую вы могли бы сделать, это объявить имя пера необязательным и присвоить ему значение по умолчанию nil:

extension UIViewController {
    static func loadFromNib(_ nibName: String? = nil) -> Self {
        return self.init(nibName: nibName, bundle: nil)
    }
}

Тогда вы сможете использовать этот метод следующим образом:

let vc = MyViewController.loadFromNib() // loads from MyViewController.nib

или

let vc = MyViewController.loadFromNib("Custom") // loads from Custom.nib
...