iPhone勉強会 20111023 -storyboard時代の Interfacebuilder-

2011/11/23
storyboardの詳細は、WWDC2011 セッションを参照

今回の資料

20111123STiDEV.pdf (UISctoryboard *)instantiateInitialViewController

UIStroyboardSegue

Push, Modal, Custom がある 大ざっと調べたところ、 Push は UINavigationController で利用、Modal は通常の画面遷移、Custom は カスタムクラスを作成して拡張、と言う感じに使い分けるようです。

Segueの呼び出し

(1) Storyboardだけで利用:prepareForSegue (2) プログラム上で利用:performSegueWithIdentifier

prepareForSegue:sender:

- 呼び出しもとcontroller が呼ばれる - sender で状況判断 - segue 実際に確認しましたが、prepareForSegue は Storyboard で UIButton 等からDrag & Drop で Segue を作成し、トリガー時に呼ばれます(delegateメソッド)。 簡単に言えば、画面遷移だけなら prepareForSegue は使わずにノンプログラムで可能です。 Segue ただし次の画面にデータを受け渡す場合は、prepareForSegue を利用します。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetailSegue"]) {
        DetailViewController *viewController = (DetailViewController *)[segue destinationViewController];
        viewController.hoge = _hoge;
    }
}
この場合ポイントは、

[self performSegueWithIdentifier:@"Segue の Identifier" sender:self]; もっと言うと、sender:self の為、そのクラス内の prepareForSegue が呼ばれます。 iOS4 までは initWithNibName して addSubView なり presentModalViewController なりして画面遷移していたが、Storyboard と Segue を利用すれば、Storyboard で一括管理でき、上記の1行だけで画面遷移できる事でしょうか?

CustomSegue

storyboard Storyboard Segue で Style = Custom 、Segue Class に Segue クラスを設定 storyboard initWithIdentifire:source

RelationShip

内容を別のシーン定義に - Navigation - TabBar

問題点

- 適切な、Segue がないとException ※try catch で対処 - コードに Segue を書くとダサい

Facebook や GMail っぽい UI

- ViewController コンテナ 親View 子Viewの切り替えを1つの View コントローラーで実現する。 - WWDC2011 Session 102 'Impleenting UIViewController Containment" - GitHub - 参考アプリ didMoveToParentViewController: で切り替え - toViewが上面に来てしまう - 置換が目的で、元に戻す手順が無い - viewController の view階層は自分で管理し、open/close を自分で書く必要がある。 - addSubView でなく insertSubView を利用

Static Cells TableView

固定のテーブルビューが作成可能 - delegateメソッドを未定義にしておく - UITableView はカスタムできない

Sceneパレット

- view階層の外に置いてプログラムから利用するIBOutletを定義

User Defined Runtime Attributes

実行時に値を指定できる - KVO を利用している - Key Path でデータを設定
AWS CLI と jq でインスタンス一覧を整形して表示
React と Laravel7 のプロジェクトを作成する
Homebrewインストール-2020年版
3直線で囲まれた範囲塗りつぶし
PuLP で線形最適化問題を解く
カスタムのペジネーションを作る
node-sass を使って sass をコンパイルする
Log ファサードでSQLログを分離して書き出す
いちから始める Docker - 複数のコンテナを使う - (2020年)
いちから始める Docker - docker-compose を使う - (2020年)
AWS ECR を使ってみる
Laravel7 でマルチ認証
Mac に AWS Client を設定する
Laravel 7 リリース
v-html でHTML表示する
Laravel で Vue コンポーネントを使う
Laravel で Nuxt.js を使ってみる(Docker環境)
いちから始める Docker -コンテナをビルド- (2020年)
いちから始める Docker -起動してみる- (2020年)
Mac で MySQL(8系)
composer で vendor がインストールできない
Eloquent の日付を Carbon で扱う
webpack 4 入門(npm編)
[Mac]容量を減らす
DIコンテナはじめ
freee SDKを Laravel で使ってみる
freee API を使ってみる
Segueを利用しない画面遷移
Xcode11.3 で XVim2 を利用する
Codable で JSONを読み込み
Webpack入門(yarn編)
MacからLaradock PostgreSQLで接続エラー
Dockerで不要なコンテナ・イメージを削除
Mac で Laradock の構築
yarn インストール&プロジェクト作成
Laravel 6.x 構築(Homestead編)
Composer インストール
nvm インストール
npm install が Mac でエラー
HTMLタグでカーソルが同時処理(ミラーリング)されてしまう
DI(依存性注入)
[Ubuntu]Let's Encryptで無料の証明書を利用する
[Apache]Apache2.4のアクセス制限が変更
[Ubuntu]rootのログインとsudo権限追加
タミヤ マイコンロボット工作セットをMacに接続してみた
pgAdimn4 でブラウザで開けなくなる
Java8 を HomebrewとjEnvで構築
Android Studio環境構築 2019
ロケールの再構築
vagrant グループに Apacheを追加