この広告は、90日以上更新していないブログに表示しています。
移転しました →
SwiftとObjective-Cは相互に呼び合えるらしい。Objective-CからSwiftはすでに記事があった。
SwiftのコードをObjective-Cから呼んでみた - Qiita
もしSwiftからObjective-Cのコードを呼べるのであれば、大抵のCocoaPodsライブラリは使い回せることになるので開発者としては大変嬉しい。せっかくなので検証にもCocoaPodsで入れたライブラリを使ってみることにした。
普通に新規作成→Swiftを選んでプロジェクトを作る。なんでもいいのでSingle View Applicationあたりにしておく。
今回はSVProgressHUDを使うことにした。独立しているので簡単に呼び出したりしやすい。
インストールプロセスは特に変わらない。
pod'SVProgressHUD'
% pod install
インストール後はxcworkspaceを開くのも一緒。
Swiftで使いたいコードのヘッダーをインポートしておくためのBriding-Headerというものを作っておく必要がある。
このBriding-Headerを作るには単にヘッダーファイルを自分で持ってくるだけではどうやらいけないらしい(このあたりの仕様はまだよくわかっていません)のでXcodeに生成させる。
New FileメニューからCocoa Classを選び、言語をObjective-Cにしてクラスを生成する。
途中でbridging header作る?って聞かれるからYES。

すると、こういうファイルがクラスファイルと一緒にできる。

このファイルに次の一行を追加する。また、生成されたクラスは今回は不要なので削除してしまう。自前のObjective-Cクラスを追加するときなんかはそのまま使えばいい。
#import<SVProgressHUD.h>
これでSwiftから呼ぶ準備が整った。
ボタンを押してプログレスの表示を切り替えるという何の実用性もないサンプルアプリケーションを考える。
スタートボタンとストップボタンとViewController.swiftファイルをStoryboardから紐付けておき、それらのアクションの中でSVProgressHUDを呼び出す。
@IBAction func start(sender : AnyObject) { SVProgressHUD.showWithStatus("loading...") } @IBAction func stop(sender : AnyObject) { SVProgressHUD.dismiss() }SVProgressHUDのメソッドを直接呼ぶことができ、きちんと動作した。

id:xoyipちょっとしたことでも書く方針のハードル低めブログです。
Platform/Framework : iOS, OSX, Rails, Unity
Langs : Objective-C Swift Ruby C#
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。