Movatterモバイル変換


[0]ホーム

URL:


ぴよログ

↓に移転したのでこっちは更新されません、多分。

この広告は、90日以上更新していないブログに表示しています。

SwiftからObjective-Cを呼ぶ方法。CocoaPodsも。

移転しました →

SwiftとObjective-Cは相互に呼び合えるらしい。Objective-CからSwiftはすでに記事があった。

SwiftのコードをObjective-Cから呼んでみた - Qiita

もしSwiftからObjective-Cのコードを呼べるのであれば、大抵のCocoaPodsライブラリは使い回せることになるので開発者としては大変嬉しい。せっかくなので検証にもCocoaPodsで入れたライブラリを使ってみることにした。

Swiftのプロジェクトを作る

普通に新規作成→Swiftを選んでプロジェクトを作る。なんでもいいのでSingle View Applicationあたりにしておく。

CocoaPodsでライブラリを入れる。

今回はSVProgressHUDを使うことにした。独立しているので簡単に呼び出したりしやすい。

samvermette/SVProgressHUD

インストールプロセスは特に変わらない。

pod'SVProgressHUD'
% pod install

インストール後はxcworkspaceを開くのも一緒。

Bridging-Headerを作る

Swiftで使いたいコードのヘッダーをインポートしておくためのBriding-Headerというものを作っておく必要がある。

このBriding-Headerを作るには単にヘッダーファイルを自分で持ってくるだけではどうやらいけないらしい(このあたりの仕様はまだよくわかっていません)のでXcodeに生成させる。

New FileメニューからCocoa Classを選び、言語をObjective-Cにしてクラスを生成する。

途中でbridging header作る?って聞かれるからYES

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

このファイルに次の一行を追加する。また、生成されたクラスは今回は不要なので削除してしまう。自前のObjective-Cクラスを追加するときなんかはそのまま使えばいい。

#import<SVProgressHUD.h>

これでSwiftから呼ぶ準備が整った。

Swiftから呼び出す

ボタンを押してプログレスの表示を切り替えるという何の実用性もないサンプルアプリケーションを考える。

スタートボタンとストップボタンとViewController.swiftファイルをStoryboardから紐付けておき、それらのアクションの中でSVProgressHUDを呼び出す。

    @IBAction func start(sender : AnyObject) {        SVProgressHUD.showWithStatus("loading...")    }    @IBAction func stop(sender : AnyObject) {        SVProgressHUD.dismiss()    }

SVProgressHUDのメソッドを直接呼ぶことができ、きちんと動作した。

プロフィール
id:xoyipid:xoyip

ちょっとしたことでも書く方針のハードル低めブログです。

Platform/Framework : iOS, OSX, Rails, Unity
Langs : Objective-C Swift Ruby C#

follow us in feedly

注目記事

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp