macOS・iOSアプリ開発

TapkuLibraryを利用してiPhoneアプリ内でカレンダーを表示する

開発途中の覚え書きを兼ねて。

TapkuLibraryというものを利用して、月別のカレンダーをiPhoneアプリに表示する方法を記載します。(Xcode 3.2.6を使用しています)

Tapku:http://tapku.com/

ClassesグループにTapkuLibraryフォルダをドラッグ

1.TapkuLibraryをダウンロード、展開し、”src/TapkuLibrary”のフォルダをXcodeの「グループとファイル」内にあるClassesグループにドラッグします。すると、ファイルの追加方法を求められます。「デスティネーショングループのフォルダに項目をコピーする(必要な場合)」にチェックをして、「追加」をクリックします。

ResourcesグループにTupkuLibrary.bundleをドラッグ

2.続いて、TapkuLibraryと同じ方法で「TapkuLibrary.bundle」をXcodeの「Resources」グループにドラッグ、「デスティネーショングループのフォルダに項目をコピーする(必要な場合)」にチェックをして、「追加」をクリックします。

2つのフレームワークの追加

3.Xcode上のFrameworksグループのコンテキストメニューから「追加」→「既存のフレームワーク」をクリックし、「QuartzCore.framework」を追加。同じ手順で「MapKit.framework」も追加します。

4.Other Sourcesグループ内の「(プロジェクト名)_Prefix.pch」ファイルを以下のように書き換えます。

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
	#import <QuartzCore/QuartzCore.h>
	#import <MapKit/MapKit.h>
#endif

5.1で追加したフォルダの中にある「NSMutableURLRequest+TKCategory.h」と「NSMutableURLRequest+TKCategory.m」をdeleteキーで取り除きます。

"t"で定義されているところが2つも

6.ここでビルドと実行をすると、「TKCategory.m」のファイルにエラーが出ます。”t”で定義されているものが2つあることがわかるので、ここを修正します。

TapkuLibraryのカレンダー

実行結果です。

9 comments

はじめまして。
私は今、iPhoneアプリを作成しようとしている者です。
こちらのサイトを参考にしながら、TapkuLibraryを使用しようとしているのですが・・・こちらのサイト通り、TKCategory.mでエラーが出ます。
こちらをどのように修正したらよいのでしょうか。
また、ここのエラーの部分であるtは何を指しているのでしょうか。
教えてください。

ユキさんへ
コメントありがとうございます。

私もiOSとMac OS Xの日曜プログラマになりたく、勉強中です。一緒に頑張っていきましょう。

まず、エラーの原因についてです。
TKCategory.mにある「UIBarButtonItem」クラス宣言内の
+ (UIBarButtonItem*) barButtonItemWithTitle:(NSString*)tという部分があります。
barButtonItemWithTitleメソッドの引数(NSString*)の名前にtが使われています。
その直後にある target:(id)t という部分でも、名前にtが使われているので、エラーが出てしまいます。

この名前の重複を解消すると、とりあえずエラーはでなくなります。

拙劣な解説ですみません…

お返事ありがとうございます。
エラーについてですが・・・言われた通りに名前の重複を解消してみたのですが、エラーが出てしまいました。
カレンダーの表示は大変ですね。

はじめまして、質問なのですが・・・
3.Xcode上のFrameworksグループのコンテキストメニューから「追加」→「既存のフレームワーク」をクリックし、「QuartzCore.framework」を追加。同じ手順で「MapKit.framework」も追加します。
ができませせん><
カレンダー作成は難しくて当サイトを見て勉強いているのですが、
バージョンは3.2.5を使用しています。
ご回答よろしくお願いします。

ユウさんへ
このブログを参考にしてくださり、ありがとうございます^^;

カレンダー関係の解説やサンプル等は、現状では参考にできるものが少ないですね。
こちらも、カレンダーを表示させることはできていますが、その先に苦戦しております…

さて、フレームワークが追加できない件についてですが
既存のフレームワークの追加をする画面で、「QuartzCore.framework」と「MapKit.framework」が出てこないということでしょうか。
Xcodeはバージョン3.2.5をお使いとのことですが、当方では3.2.6を使用して、この作業を行いました。
その差のせいでしょうか…?

こちらで思い当たるのは、そのバージョンの差くらいでしょうか。iOS SDKのバージョンも違ったはずですので…(iOS SDK 4.2/4.3)

はじめまして、いつも当ブログを参考にさせていただいております。
一つ質問させていただきます。
5番まで進んだのですが、エラーが起きずに進んでしまい、白紙(表が表示される)用ようになっています。
ちなみに5番の消去しなければエラーが出て消去すると直ります。
作成の仕方を教えていただけないでしょうか?
よろしくお願いします。

yuさんへ。当ブログを閲覧していただき、ありがとうございます。

> 白紙(表が表示される)用ようになっています。
というのは、カレンダーが表示されないという解釈でよろしいでしょうか。

こちらの環境では、このブログに書いたとおりに進むと問題なく実行できてしまうので、yuさんの状況を再現するのことが困難でした。

(現在ではXcode 4.2、iOS SDK 5.0を使っていて、その新しい環境でもこの記事を書いたときに作成したプロジェクトを実行してみましたが、いくつか警告はでるものの、Xcode 3.2.6で試したときと同じように動作しました。)

解説ができなくて申し訳ございません。
詳しく状況を教えて頂ければ、こちらで更に検証してみたいと思います。

秀々車輪さんへ。
返答ありがとうございます。
カレンダーが表示されないという解釈で大丈夫です。言葉足らずで申し訳ありません。
今現在のxcodeのバージョンは、3.2-5の64bit版となります。

ひとつ疑問なのですが、最初の新規プロジェクトで、どのテンプレートを設定をすればよろしいのでしょうか?
その当たりを教えていただけますでしょうか?
よろしくお願いします。

yuさんへ

テンプレートの件ですが、どのテンプレートを選んでもTapkuLibraryは使うことができます。
カレンダーを表示させたい部分にカレンダーを実装すれば、どんなテンプレートで作ったアプリでも、TapkuLibraryのカレンダーを表示できます。
この記事ではTapkuLibraryをプロジェクト内に導入する方法のみに注視していたため、私はカレンダーを画面内に実装する方法までは記載していませんでした。

実装の方法が詳しく書かれている他のブログの記事がございますので、そちらへのアドレスを貼らせて頂きます。
http://ameblo.jp/yuhirb/entry-10817184120.html#cbox