SwiftからMWPhotoBrowserを使おうとしたらイケメンなお兄さんに怒られる
Objective-Cでできているプロジェクトを、Swiftに書き直してるんだけど
ライブラリがObjective-Cで出来てて、
そのまま使わないといけない場面が結構あります
(まだObjective-Cのまんまなクラスが結構あるので、一気に変えられない)
これが結構たいへん。
もちろん(プロジェクト名)-Bridging-header.hはちゃんと書いてますよ?
検索してみても、
ライブラリそのものをSwift製のやつに乗り換えちゃいましたテヘペロ
みたいなんが結構あってゲンナリです。
有名な写真閲覧ライブラリのMWPhotoBrowserもその一つ。
(詳細リンクを貼ってみたら、イケメンなお兄さんの写真が出て来てびっくりしました。このお兄さんが作ってくれたのかな?ありがとう愛してるよ!)
んでこれをObjective-Cのまま、Swiftから呼び出して使いたいんだけど
適当にSwiftに直してみただけだと
Type ‘なんとかビューコントローラー’ does not conform to protocol ‘MWPhotoBrowserDelegate’
とかいうのが出ます…。
つまり「必須メソッド足りとらんやんけ!!」と怒られてしまうわけです。
えぇ~必須のヤツ2つとも書いたやん???って思って結構迷ったんですけど…。
結局Swiftに書き直す段階で微妙に違うメソッドになってしまっていたために、
必須メソッドどこにも見当たらないじゃない!嘘つき!とか言われてたみたいです。
そこらへんは空気読んでくれよ!
で色々探してたどり着いたのがこちらの方法。
ポイントは二つ!
-MWPhotoじゃなくてMWPhotoProtocolを返す
-IntじゃなくてUIntにする
お節介にもこの辺をMWPhoto、Intって書き直しちゃうと認識できなくなっちゃうようです。
後ブラウザを実際使用するときに、setCurrentPhotoIndexっていうのがあるけど
そこでもIntじゃなくてUIntを要求される。すなわち
browser.setCurrentPhotoIndex(UInt(indexPath.row))
とかそんな感じです。
この記事を書くまでは結構ムカついていたけど
イケメンのお兄さんが出て来たので若干怒りが収まりました。
ありがとうイケメンのお兄さん!