質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2645閲覧

外部ライブラリのframework(フレームワーク)をimportするとNo such module 'PageMenuKit'というエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2019/08/23 09:07

外部ライブラリ(https://github.com/magickworx/PageMenuKitSwift)
を使いたいと考え、

以下サイト抜粋[
How to use PageMenuKit.framework

Xcode の Build Target に PageMenuKitFatBinary を指定して Build を実行すると、PageMenuKit.framework が作成される。これを自作アプリの Xcode の Project で設定する。

あとは、以下のようなコードを記述して利用する。

import

1import PageMenuKit 2 3class RootViewController: BaseViewController 4{ 5 var pageMenuController: PMKPageMenuController? = nil 6 7 override func setup() { 8 super.setup() 9 10 self.title = "PageMenuKit Frameworks" 11 } 12 13 override func didReceiveMemoryWarning() { 14 super.didReceiveMemoryWarning() 15 // Dispose of any resources that can be recreated. 16 } 17 18 override func loadView() { 19 super.loadView() 20 } 21 22 override func viewDidLoad() { 23 super.viewDidLoad() 24 25 var controllers: [UIViewController] = [] 26 let dateFormatter = DateFormatter() 27 for month in dateFormatter.monthSymbols { 28 let viewController: DataViewController = DataViewController() 29 viewController.title = month 30 controllers.append(viewController) 31 } 32 33 let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height 34 /* 35 * Available menuStyles: 36 * .plain, .tab, .smart, .hacka, .ellipse, .web, .suite, .netlab, .nhk 37 * See PMKPageMenuItem.swift in PageMenuKit folder. 38 * "menuColors: []" means that we will use the default colors. 39 * "startIndex" can be set 1...controllers.count. 40 */ 41 pageMenuController = PMKPageMenuController(controllers: controllers, menuStyle: .smart, menuColors: [], startIndex: 1, topBarHeight: statusBarHeight) 42// pageMenuController = PMKPageMenuController(controllers: controllers, menuStyle: .plain, menuColors: [.purple], startIndex: 8, topBarHeight: statusBarHeight) 43 pageMenuController?.delegate = self 44 self.addChild(pageMenuController!) 45 self.view.addSubview(pageMenuController!.view) 46 pageMenuController?.didMove(toParent: self) 47 } 48 49 override func viewWillAppear(_ animated: Bool) { 50 super.viewWillAppear(animated) 51 52 self.navigationController?.navigationBar.isHidden = false 53 } 54} 55 56extension RootViewController: PMKPageMenuControllerDelegate 57{ 58 func pageMenuController(_ pageMenuController: PMKPageMenuController, willMoveTo viewController: UIViewController, at menuIndex: Int) { 59 } 60 61 func pageMenuController(_ pageMenuController: PMKPageMenuController, didMoveTo viewController: UIViewController, at menuIndex: Int) { 62 } 63 64 func pageMenuController(_ pageMenuController: PMKPageMenuController, didPrepare menuItems: [PMKPageMenuItem]) { 65 // XXX: For .hacka style 66 var i: Int = 1 67 for item: PMKPageMenuItem in menuItems { 68 item.badgeValue = String(format: "%zd", i) 69 i += 1 70 } 71 } 72 73 func pageMenuController(_ pageMenuController: PMKPageMenuController, didSelect menuItem: PMKPageMenuItem, at menuIndex: Int) { 74 menuItem.badgeValue = nil // XXX: For .hacka style 75 } 76} 77コード

]

と書かれていたのでGeneralのEmbedded Binariesのところに生成されたPageMenuKit.frameworkを追加し、

イメージ説明

上記のコードを記述して、ビルドしたところ、No such module 'PageMenuKit'というエラーが出ました。

色々と調べてみてFramework Search Pathsが原因かなと思ったんですが、

イメージ説明

ちゃんとプロジェクト内にPageMenuKit.frameworkを配置できていると思います。

原因を教えてくださると幸いです。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分も試してみました。

1.gitのファイルzipでDL
2.DLファイルのXcodeporjを開き、XcodeでPageMenuKitFatBinary を指定して Build を実行
3.DLファイル内にPageMenuKit.frameworkができているのをFinderから確認
4.利用したいXcodeprojectを開くor作成
5.そのファイルの中にPageMenuKit.frameworkを移動
6.利用するXcodeprojectを開き、左のNavigationペインでTop階層のアプリ名のXcodeprojをクリック
7.TARGETSの一番上のを選び、右側で「Embedded Binaries」の「+」ボタンをおす
8.左下の「Add Other ...」で、自分のXcodeporjectのファイル(1個階層上のはず)のPageMenuKit.frameworkを選ぶ
9. 「copy items if needed」にチェックをつける ←9.としましたが、バグで表示変になってます
10. Finishを押せば完了 ←10.としましたが、バグで表示変になってます

自分はコレでエラーなしになりました。
違う位置(projectのファイル外)にあるままリンクを貼った(8.でファイルを選ぶ、9は表示されなかった)だけでは
hiroshi1996さんと同様にXcodeからありませんと怒られました。

やってみてください。
なお、すでにリンクを繋げて(Embedded BinariesにPageMenuKit.frameworkが追加されている)ある場合は
一度削除してから上記の操作を再度行なってください。

詰まった場合は、何番で詰まったかコメントにください。

追記

イメージ説明

5.ではFinderで、上記の位置にファイルを移動するです。

投稿2019/08/23 09:52

編集2019/08/24 00:16
hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/23 11:42

コメントありがとうございます。 4.利用したいXcodeprojectを開くor作成 5.そのファイルの中にPageMenuKit.frameworkを移動 →"その中のファイルに"というのは、Finder上での利用したいXcodeprojectのフォルダにという意味でしょうか…? 例えば、Xcodeで利用したいXcodeprojectを"ああああああ"という名前で新たに作成すると、 Finder上に以下のような"あああああ"というフォルダでき あああああ …① ↓  ↓ ↓   →あああああ.xcodeproj →あああああ …②  ↓  →・AppDelegate.swift   ・Assets.xcassets   ・Base.lproj   ・Info.plist   ・ViewController.swift この場合でいうとDLファイル内からPageMenuKit.frameworkは、 あああああ …①の中に"あああああ.xcodeproj"、"あああああ …②"と並べておけばいよいのか、それとも、あああああ …②の中に中に入れて"AppDelegate.swift"、"Assets.xcassets"、"Base.lproj"、"Info.plist"、"ViewController.swift"と並べておけばよいのでしょうか?
hameji

2019/08/24 00:17 編集

xcodeprojファイル内ではなく、一番上のファイルのとこ、.xcodeprojがあるのと同じ階層で大丈夫です。 画像を追加しました。
退会済みユーザー

退会済みユーザー

2019/08/24 03:34

とりあえず、エラーが消えてビルドが成功するところまでは行きましたが、ビルドしても真っ白な画面しか表示されないという状態が発生しているので、改めて質問をさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問