BasicSwiftClass , BasicSwiftClassLayout
, , nibName
, , , :
public protocol BasicSwiftClassLayout {
static var nibName: String { get }
}
public struct NormalLayout: BasicSwiftClassLayout {
public static let nibName = "NormalLayoutNibName"
}
public struct OtherLayout: BasicSwiftClassLayout {
public static let nibName = "OtherLayoutNibName"
}
, , Bundle(for class: AnyClass)
, . , - , , , , , , :
/ , . , public struct DifferentLayout: BasicSwiftClassLayout
, BasicSwiftClass<DifferentLayout>
, BasicSwiftClass
, , , ?
BasicSwiftClass<OtherLayout>
, , . -, , .
, , BasicSwiftClass<Layout>
, Bundle(for:)
. , , , , , .
:
, , BasicSwiftClass. :.
public protocol BasicSwiftClassLayout: class {
static var nibName: String { get }
}
final public class NormalLayout: BasicSwiftClassLayout {
public static let nibName = "NormalLayoutNibName"
}
public class BasicSwiftClass<Layout: BasicSwiftClassLayout> {
func loadFromNib() {
let view = Bundle(for: Layout.self).loadNibNamed(Layout.nibName, owner: self, options: nil)?.first
}
}
, BasicSwiftClass<Layout>
Layout
, , , . , Swift , ( ) , , , , BasicSwiftClass<Layout>
, .
, , , BasicSwiftClass<Layout>
, . , , , - , - :
public protocol ViewRepresentable {
var view: UIView { get }
}
extension BasicSwiftClass<Layout>: ViewRepresentable {
public var view: UIView {
}
let array: [ViewRepresentable] = [BasicSwiftClass<IPadLayout>, BasicSwiftClass<NormalLayout>]
array.forEach { self.containerView.addSubview($0.view) }
- .., . BasicSwiftClass<Layout>
, . , .