ios - 如何将 UIViewController 传递给 Swift 中的另一个类?

标签 ios swift swift3

如何将 UIViewController 传递给 Swift 中的另一个类? 我有 SomeViewController 类:

class RidingViewController: UIViewController {
    fileprivate let header = RidingViewHeader(controller: self)

    override func viewDidLoad() {
        super.viewDidLoad()
        header.setNavigationBar()
    }
    ...
}

我想分离一些代码并在另一个类中设置它的标题。我创建了这个类

class RidingViewHeader {

    var controller: UIViewController
    let navigationBar= UINavigationBar()
    let navigationItem = UINavigationItem()

    init(controller: UIViewController) {
        self.controller = controller
    }
    ...
}

在这种情况下,我得到一个错误: 无法将类型“(NSObject) -> () -> UIViewController”的值转换为预期的参数类型“UIViewController”

更好的方法是什么?

最佳答案

在 View Controller 初始化之前,您不能访问 self。您可以将其设为惰性变量:

fileprivate lazy var header: RidingViewHeader = {
    return RidingViewHeader(controller: self)
}()

关于ios - 如何将 UIViewController 传递给 Swift 中的另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40451067/

相关文章:

ios - Swift 3 - MKPointAnnotation 自定义图像

swift - 如何退出runloop?

ios - Swift UIlabels 在 uistackview 中显示不正确

ios - 的IOS objective-c 解析JSON

ios - 如何停止来自应用程序的通知

swift - Lint 具有 SSZipArchive 依赖项的 Swift cocoa pod

ios - 解读iOS崩溃日志与-[UIApplication _cachedSystemAnimationFenceCreatingIfNecessary :]

objective-c - swift 3 _ObjectiveCBridgeable 一致性

ios - 如何替换或解决 unistd.h 中的 __TVOS_PROHIBITED 依赖项

ios - 如何根据屏幕尺寸更改字体大小