自分の所属している京大マイコンクラブ (KMC) では毎年3月に春合宿を行っており、60分ほど講座を行います。
今年は iOSアプリ作成入門 を行いました。
また、書いたけど没になった Android 編も公開しました。
続きを読む自分の所属している京大マイコンクラブ (KMC) では毎年3月に春合宿を行っており、60分ほど講座を行います。
今年は iOSアプリ作成入門 を行いました。
また、書いたけど没になった Android 編も公開しました。
続きを読む今回は画面遷移の実装、データの編集、データの永続化あたりです。
Intent
は Segue
と言うらしい。
Segue
にもいろんな種類の遷移があって、それぞれアニメーション等が微妙に違う。こういうのが apple っぽくて良いですね。NavigationController
は Activity
みたいなもので、 ViewController
は Fragment
みたいなものだというざっくりした認識を得た。Push Segue
と Modal Segue
というのがある。
NavigationController
も入れ替わるが、前者ではそんなことない。prepareForSegue
は自分から離れるときに呼ばれる。
ViewController
が降ってくるので、そこのメンバ変数に入れたいものを突っ込む…らしいIntent
に一旦突っ込むので直接入れるのは意外だったViewController
が降ってくるのでそこからデータを受け取るとのこと。メソッド一つ設定するだけでいい感じの編集UIができあがる。
編集UI、横スクロールした時に View
がはみ出していてつらい気持ちになった。
厳しい雰囲気 pic.twitter.com/u2AU7UKMDD
— のにれん(うにゃ)) (@nonylene) February 29, 2016
iPhone6S だったらならなかった。あまり横幅を広くするなということだろうか。
Android よりも楽にモデルごと保存できるようでよかった。この程度になると Android では SQLite 使わないといけなさそう?
こうして公式チュートリアルは終わりました。あとは自分で軽いアプリを作ってみたいと思います。
一日目
1日目の記事はこちらです。
さて今日は二日目です。果たしてサークルの合宿に間に合うのか…
今日はモデルを定義して TableView
を作成しました。
Androidでいう ListView
と RecyclerView
の中間っぽい。
ListView
という感じ。。iOS はこんなに簡単に ListView
が作れるの最高ですね…!
でも RecyclerView
のほうが型的には安心だという気がした。
tableView.dequeueReusableCellWithIdentifier("MealTableViewCell", forIndexPath: indexPath) as! MealTableViewCell
ってなんだよ…そこクラス入れていい感じに型安全にできるじゃん…!って思ってしまう。
とにかく文字列で指定という感じ、obj-C の遺産だったりするんだろうか。
ViewController
のクラスを指定するときに存在しないクラスを指定してもビルドできちゃうんですね
StoryBoard
上でパーツ削除した時、コードから消すのは手でチマチマやるのは少しつらい。
StoryBoard
に存在しないのにビルド通るのか。最高だけど UI 周り案外いろいろだるいのでは、と思った日でした。
こんにちは。最近 build.gradle
をゴニョゴニョするのに慣れてきました。
ここ数日、 PhotoLinkViewer をモジュール分けしたいなーと思って一部分を切り離しました。
切り離したものは他のアプリでも使いたいので、プロジェクトとして独立させることにしています。
ここで切り離し元から参照するには 2つほど方法があり、
submodule
などでプロジェクト直下等に置いて管理する
aar
化してレポジトリに置き、 build.gradle
の dependencies
に組み込む。
という感じです。
submodule で管理する方法を使えば ManifestMerger
が AndroidManifest
をよしなにマージしてくれるので、切り離し元の AndroidManifest
に Activity の情報を書く必要がありません。
marshmallow のつづりが未だに覚えられないです。
原因わかったので追記しました。
さて、自分の作っている PhotoLinkViewer には「他のブラウザで開く」機能があります。例えば画像の開くアプリで PhotoLinkViewer をデフォルトのアプリに指定していて、その後画像だけではなくウェブサイトが見たくなった時などに重宝します。
これはどのように実現しているかというと、
startActivity(Intent.createChooser(new Intent(Intent.ACTION_VIEW, uri), getString(R.string.intent_title)))
として行っています。 createChooser
を用いることでこのアプリをデフォルト設定している時でもアプリ選択画面が現れるようにしています。
しかし、この機能が Andorid 6.0 からうまく動かなくなってしまい、デフォルト設定していればまた PhotoLinkViewer が立ち上がってしまうようになりました。
続きを読む