222


Xcode6で自作フレームワークを作成しました。  
フレームワーク用プロジェクト内でxibを使用したコードがあるのですが。  
デモアプリを作成し、そこに自作したフレームワークを追加して呼び出すと以下のエラーが発生してしまいます。

[code]

    2014-11-27 19:09:25.323 SampleApp[5709:1563355] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </private/var/mobile/Containers/Bundle/Application/6FDD2A14-A4A8-47FC-88B2-5DF48546F72D/SampleApp.app> (loaded)' with name 'SampleView''
    *** First throw call stack:
    (0x1824cde48 0x192c140e4 0x1824cdd88 0x1870874f0 0x1000d7360 0x1000d72dc 0x1000d7fb8 0x100100df0 0x100101cfc 0x1000d7f48 0x1000d80e8 0x10006d130 0x186f0b54c 0x186f0f724 0x186f13a6c 0x186f12f48 0x186f12ea0 0x186f067d4 0x18a729640 0x182486124 0x18248522c 0x182483850 0x1823b11f4 0x18b53f5a4 0x186ce2784 0x10006e504 0x193282a08)
    libc++abi.dylib: terminating with uncaught exception of type NSException
    
[/code]

おそらく、nibファイルが見つけられないのが原因です。  
これを解決する良い方法をご存知の方は居らっしゃいますでしょうか。

今のところ、考えてる解決策は２つあります

  * xibを使わないでコードで書く
  * xibをデモプロジェクト自体に追加する (この場合、フレームワークを配布するときにnibファイルも別途配布することになりそう)


CC BY-SA 3.0
2014-12-02T01:41:02.220
215
2014-12-02T02:58:06.713
2014-12-02T02:10:11.150
104
283
question
xcode xcode6 framework xib
Xcode6自作フレームワーク内でxibを使用すると'Could not load NIB in bundle: 'エラーが発生する


Framework内ではFrameworkのBundleからNIBを見つける必要があります。ですのでFramework内のクラス内ではSwiftであれば以下のようにコーディングします。

[code]

    public class ViewLoader {
    
        public class func myView() -> UIView {
            let nib = UINib(nibName: "MyView", bundle: NSBundle(forClass: self))
            let view = nib.instantiateWithOwner(nil, options: nil).first as UIView
            return view
        }
    
        public func myView() -> UIView {
            let nib = UINib(nibName: "MyView", bundle: NSBundle(forClass: ViewLoader.self))
            let view = nib.instantiateWithOwner(nil, options: nil).first as UIView
            return view
        }
    
        public init() {
    
        }
    
    }
    
[/code]


CC BY-SA 3.0
2014-12-02T02:22:34.553
222
2014-12-02T02:58:06.713
2014-12-02T02:58:06.713
238
238
215
answer