Réponses:
Jamais utilisé, mais je pense que ça devrait être ça:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
où identifier est l'ID de groupe de votre cible. Une autre solution pour les types valeur consiste à déclarer une classe vide dans votre type valeur. Exemple de cette dernière solution: Bundle(for: Foo.Bar.self)
où Foo
- votre structure, Bar
- une classe interne.
type(of: self)
reviendra ClassName.Type
et appellera Bundle(for:)
à qui renvoie le paquet principal
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
où identifier est l'ID de groupe de votre cible. Si vous ne voulez pas coder en dur l'ID du bundle, utilisez Bundle(for: Foo.Bar.self)
where Foo
- votre structure, Bar
- une classe interne.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Si vous travaillez sur une classe alors
Bundle(for: type(of: self))
Parfois, vous pouvez travailler dans une structure, puis vous devez utiliser n'importe quelle classe du bundle
Bundle(for: AnyClassInTheBundle.self)
Chargement du xib pour dynamicType de la classe
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "CellForAlert", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil).first as! UIView
view.frame = bounds
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.addSubview(view);
Dans Swift 3.0, vous pouvez utiliser:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}