Pull requestしたらローカライズ依頼された - [yashigani days] などで知ったVTAcknowledgementsViewControllerというライブラリがあります。CocoaPodsが自動生成してくれる各ライブラリのライセンス表記をまとめたファイルをうまいことアプリ内で画面表示してくれる便利ライブラリです。
CocoaPodsが生成するファイル名は通常、Pods-acknowledgements.plist
ですが、Podfileで下記のようにターゲットを明示的に指定している場合、
# Podfile target "TargetName" do pod 'VTAcknowledgementsViewController' end
生成されるファイル名がPods-TargetName-acknowledgements.plist
というように変わります。
ライブラリの機能としてコードベースでの表示では、以下のようにしてターゲット入りのカスタムPlistファイル名に対応していたのですが、
NSString *path = [[NSBundle mainBundle] pathForResource:@"Pods-TargetName-acknowledgements" ofType:@"plist"]; VTAcknowledgementsViewController *viewController = [[VTAcknowledgementsViewController alloc] initWithAcknowledgementsPlistPath:path];
元のエントリーで追加されていたStoryboardサポートではカスタムPlistファイル名は未対応でした。ということで、Storyboardでの配置でもカスタムPlistファイル名に対応するPull requestをしたらマージされましたよ、というお話です。
設定方法
- 元エントリーの画像のように、Storyboard上にUITableViewControllerを配置し、Custom Classに
VTAcknowledgementsViewController
を指定する。 - 配置したTableViewControllerの
User Defined Runtime Attributes
に- Key Path: acknowledgementsPlistName
- Type: String
- Value: ファイル名(上記例では "Pods-TargetName-acknowledgements")
としたものを追加する。
実装内容
設定方法の通り、対応にはUser Defined Runtime Attributes
を使用しています。User Defined Runtime Attributes
でセットされた値が実際にプロパティにセットされるのは、initWithCoder:
とawakeFromNib
の間のため、Storyboardベースでの初期化のエントリーポイントをinitWithCoder:
からawakeFromNib
に変更した上で、プロパティに値がセットされているかどうかでデフォルトのファイル名を使用するか、カスタムファイル名を使用するかどうかを切り分けるようにしています。
注意
2014/04/15現在、CocoaPodsでのリリースには上記対応はまだ含まれていません。CHANGELOGを見る限り、次のリリースとなる ver 0.11 で入るのでリリースを待つか、
# Podfile pod 'VTAcknowledgementsViewController', :head
Podfileの:head
オプションでリポジトリからmasterブランチを直接取得してくれば使えるようになります。
それでは便利なCocoaPodsライフを!
2014/05/05 追記
ver 0.11 がリリースされました!ので、以下だけで本対応が含まれたバージョンが使用できます。
# Podfile pod 'VTAcknowledgementsViewController'