Chris Eidhof
ドイツ・ベルリンに住むオランダ人のソフトウェア開発者です。iOS/Macアプリ開発を中心に活動しており、DecksetやSceneryを開発しています。UIKonfやobjc.ioの立ち上げ、Functional Programming in Swift, Advanced Swift(現在、執筆中)の著者でもあります。
明日の最後のセッションに登壇するChris Eidhofさんによる"The Power of Swift"の拙訳です #tryswiftconf / Swiftのパワー(objc.io #16-1 日本語訳)https://t.co/lvj0vJVd0C
— Shingo Sato (@gonsee) March 2, 2016
この講演ではよりSwiftらしいTable View Controllerの使い方を探ります。ジェネリクスやStruct、再利用可能なUITableViewControllerのサブクラスを作る関数などについて話します。
TableViewの話をします。
テーブルビューにイニシャライザが必要
シンプルなテーブルビューが出来ました。
違い表示をしたい場合
Styleを変えます
そしてここにプロパティを加えてイニシャライザに与える
ここで受け渡す
オブジェクト指向に慣れていたらこれでもいいかな、itemを渡してConfigurationしてもらう
あるいはこうして こうする Subtitleにしてもいいね
ポケモンを見せたいならGenericsを使います。 PersonをItemに書き換えていきます
Editを加える この時点でPlaygroundを使うのをやめましょう。ここをFix出来ます。
新しいXcodeではインタラクティブに出来ますが、今回は別のプロジェクトに移す必要があります。AppDelegateに持っていいます。動くでしょうか?
Editingを実行するにはDeletionだけ実装します。デリーとかチェックして まだ落ちますね
TableViewをアップデートする必要があります。
Undo
UndoHistoryはGenericsです。 変更したらArrayに入れます
これで使えます
使ってみましょう アイテムを計算型で定義
Hsitoryが変わったらリロードが必要ですね
Undo バーからUndoを呼べるように
機能するようになった
Structであることでこのようになる。
クリーンアップしましょう DidSetにもっていきます
CanUndoをつくって戻せる時だけ戻るボタンを表示する
ここをシンプルにしたい この設定を外に出しましょう テストが出来て再利用が出来ます。
もう少し出来るのは、configがライブラリに入っていたら、それはコピーしてアプリの中で変えられます。structなので簡単にコピーを作れます。
再利用できてテストの出来るコードになりました。
コードは以上です。皆さんに考えていただきたいのは、利用できるなら、Generics、structによってシンプルに出来るということです。
コードは公開されますか?
?
(※なんと再現された方が!)
Undo、TableViewConfiguration など2日目最後のセッションのコードを記憶とniwatakoさんブログを頼りに写経できた https://t.co/ylkEfLR7rJ #tryswiftconf
— ほんとは超いそがし松 (@himara2) March 3, 2016
ドーン、というエフェクトは何を使っていますか?
Timにインスピレーションを受けて昨晩作りました
try swiftでchrisさんが公開してくれたドーン!のコードにガワをつけてMac Appつくってみたよ。https://t.co/WxHjIUXai0
— watanabe toshinori (@w_toshinori) 2016年3月14日
他にも例がありますか?一般化やConfigを切り出す方法は
ネットワーキングが好きな例です。パリで発表した時に今日の半分で終わったが、前半でネットワーキングが入っていた。APIのJSONをパースして...というもので、structを使っていて非同期コードが一つの場所に入っていてテストが簡単にできた
マジックキーボードのショートカットはなんでしたか?
Cntrol Option Command F : Fix All IN Scope
今回のViewControllerはStoryboardで使えないと思う、Genericsだから。こういうパターンを使うとStoryboardやSegueだと方が消えるのでSwiftに向いていないのでしょうか
とても良いポイント。Storyboardを使ってアプリを作りました。気に入っていましたが、Storyboardで使うことも出来ます。もう一つサブクラスを作ります。MyTableViewControllerをFinalにしなければサブクラスはGenericsではありません。それが一つの可能性です。
ですが、Storyboardを使う回数は減ってきました。ロジックをViewControllから出すのは良いと思っています。そのメリットはStoryboardより大きいと思います。
2日目は世界のテーブルビュー実装展示会になっている。すごく面白い。 #tryswiftconf
— Hirohito Kato ⌘ (@hkato193) March 3, 2016
このコード後で見返したいなぁ #tryswiftconf
— merge (@color_box) March 3, 2016
ios初心者が見るべきライブコーディング #tryswiftconf
— iida (@iida_0213) March 3, 2016
セルを削除した場合は、reloadDataではなくdeleteRowsAtIndexPaths()をしないと、不自然な見た目になるから注意。 #tryswiftconf
— Hirohito Kato ⌘ (@hkato193) March 3, 2016
UITableViewを使った実践的なデモはすぐ実プロジェクトに使えそう。理論だけじゃないSwift素敵。 #tryswiftconf
— Kaoru (@TachibanaKaoru) March 3, 2016
F10でドーン!はこのライブラリ使ってるらしい / shpakovski/MASShortcut https://t.co/uA7PwF9daY #tryswiftconf
— Tsutsumi Shuichi (@shu223) March 3, 2016
「SwiftらしいTable View Controllerの使い方 魔法のようなライブコーディング!#tryswiftconf」をトゥギャりました。 https://t.co/xGQuSfYF8R
— トゥギャッター開発まとめ (@tg__dev) March 3, 2016
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!