//
|
// LD_Def.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/2/28.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import Foundation
|
// MARK: -- Function
|
///当前的VC
|
public func LD_currentViewController() -> UIViewController {
|
var currVC:UIViewController?
|
var Rootvc = UIApplication.shared.keyWindow?.rootViewController
|
repeat {
|
if (Rootvc?.isKind(of: NSClassFromString("UINavigationController")!))! {
|
let nav = Rootvc as! UINavigationController
|
let v = nav.viewControllers.last
|
currVC = v
|
Rootvc = v?.presentedViewController
|
continue
|
}else if (Rootvc?.isKind(of: NSClassFromString("UITabBarController")!))!{
|
let tabVC = Rootvc as! UITabBarController
|
currVC = tabVC
|
Rootvc = tabVC.viewControllers?[tabVC.selectedIndex]
|
continue
|
}else {
|
return currVC!
|
}
|
|
} while Rootvc != nil
|
return currVC!
|
}
|
|
///当前的NavVC
|
public func LD_currentNavigationController() -> UINavigationController {
|
return LD_currentViewController().navigationController!
|
}
|
|
//MARK: - 加载xib视图
|
public protocol LDNibView{}
|
|
public extension LDNibView where Self : UIView{
|
|
@discardableResult
|
///加载方式不同:用于非pod项目中,加载xib所使用
|
public static func ld_loadNibView() -> Self {
|
return Bundle.main.loadNibNamed(Mirror(reflecting: self).description.replacingOccurrences(of: "Mirror for", with: "").replacingOccurrences(of: ".Type", with: "").trimmingCharacters(in: CharacterSet.whitespaces), owner: nil, options: nil)?.first as! Self
|
}
|
}
|
|
class TapButton:UIButton{
|
|
}
|
|
final class Box<T> {
|
// 声明一个别名
|
typealias Listener = (T) -> Void
|
var listener: Listener?
|
|
var value: T? {
|
didSet {
|
guard let v = value else { return }
|
listener?(v)
|
}
|
}
|
|
init(_ value: T? = nil){
|
self.value = value
|
}
|
|
func bind(listener: Listener?) {
|
self.listener = listener
|
guard let v = value else { return }
|
listener?(v)
|
}
|
}
|