Storyboard
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Storyboard);
*目次 [#ff073cc6]
#contents
*関連ページ [#h2ee4744]
-[[Xcode]]
-[[UIKit]]
-[[./セグエ]]
-[[./分割して使う]]
-[[./StoryboardReference]]
-[[./AutoLayout]]
*参考情報 [#t1aa4d0a]
-[[[iOS]これからiOSアプリを作る方向け Storyboardで画面遷...
*概要 [#y23e5151]
-画面遷移の仕組み
*全般 [#pa5e7896]
**ストーリーボードのデバイスがデカイ? [#ke7d76f9]
-一応仕様らしい。ただしIBでView Controllerを選択しSimulat...
-iPhoneに固定することもできるらしい。[[SwiftをiOSシミュレ...
**Storyboardを使わない方法に関して [#s9a8a6c2]
-[[StoryBoardを使わない方法 - Qiita:http://qiita.com/shou...
-[[Q. StoryboardとXIBはどう使い分ければいいんだろうか? -...
-以上を踏まえ、Appleが標準としてStoryboardを押しているこ...
*ビューコントローラー [#r8173a1e]
**初期ビューコントローラーを指定する [#c2fcdf50]
-左側に矢印のついたビューコントローラーがないと何も表示さ...
-Attributes Inspectorを開き、View Controllerの「Is Initia...
**プログラムコードからストーリーボードのビューコントロー...
-以下のように呼び出す
#pre{{
let storyboard = UIStoryboard(name: "Main", bundl...
let vc:UIViewController = storyboard.instantiateV...
let webViewController = vc as! WebViewController
webViewController.initialUrl = urlString
self.navigationController!.presentViewController(...
}}
-呼び出し先のビューコントローラーには、Storyboard IDを割...
*テーブルビュー [#jc45a166]
**一番上のセルがステータスバーにかぶってしまう [#i755c643]
-最初にテーブルのサイズをステータスバー以下にしておいてAu...
-上限に設定するとかぶるが、ステータスバーの下にしてから始...
-コードで以下のようにするのはサイズが異なるデバイスで対応...
self.tableView.contentInset = UIEdgeInsets(top: 2...
**左右のマージン [#a8d5b827]
-Pinの設定でConstraint to Marginのせい。
**UITableViewControllerを使う [#fba5a154]
-Single View Applicationで作成。
-ViewController.swiftを削除。
-Main.storyboardの中のView Controllerを削除。かわりにTabl...
--Attributes InspectorのView Controllerセクションにある「...
-「File > New」からUITableViewControllerクラスのサブクラ...
-Table View ControllerのクラスをMyTableViewControllerとす...
-UITableViewControllerにナビゲーションコントローラーやツ...
※UITableViewControllerを使わないと、Static Cellsが使えな...
*ナビゲーションコントローラー [#rdd06163]
**ナビゲーションコントローラーを使う [#d9f032de]
-[[Xcode6.xのStoryboardにてToolBar(下のバー)が出ない人...
-既存のView Controllerを選択し、「Editor > Embed in > Nav...
※ちなみに[[ios - StoryboardのNavigation Barの存在理由 - ...
**ナビゲーションコントローラーに編集ボタンを追加 [#r031d9...
-上の方法でナビゲーションコントローラーを追加した場合、Vi...
#pre{{
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view...
self.navigationItem.rightBarButtonItem = self.edi...
}
}}
**ナビゲーションコントローラーにCancel/Doneボタンを追加す...
-Bar Button Itemをドラッグして、ボタンの種類をCancel、Don...
**ナビゲーションコントローラーにツールバーを表示する [#p7...
-ナビゲーションコントローラーを使っている場合、Attributes...
-Interface Builderで操作してもだめ。
**ナビゲーションコントローラーのツールバーの表示非表示を...
-例えば編集ボタンが押されたとき、ツールバーを非表示にした...
#pre{{
override func setEditing(editing: Bool, animated: Boo...
super.setEditing(editing, animated: animated);
self.navigationController?.setToolbarHidden(editi...
}
}}
*画面遷移 [#i0862f70]
**画面遷移の基本 [#w1d7d4f0]
-あるビューコントローラーから他のビューコントローラーをPr...
-ビューコントローラーのアイコンを他のビューコントローラー...
-呼び出し元のボタンタップやテーブルセルタップで、performS...
#pre{{
func tableView(_ tableView: UITableView, didSelectRow...
if tableView.isEditing {
let shelf = fetchedResultsController.object(a...
performSegue(withIdentifier: "editShelf", sen...
} else {
let shelf = fetchedResultsController.object(a...
performSegue(withIdentifier: "listBook", send...
}
}
}}
**戻る処理 [#wcda5875]
-戻り先のUIViewControllerに以下のメソッドを作成。
#pre{{
@IBAction func unwindToTop(segue: UIStoryboardSegue) {
}
}}
-Interface Builderで遷移先のボタンなどを選択し、Exitボタ...
-手動で戻りたい場合は、ViewController自身をExitボタンにド...
#pre{{
self.performSegue(withIdentifier: "back",...
}}
*Tips [#veab801d]
**独自のUIViewControllerを使用する [#yc7b2ade]
-Storyboardで「ビューコントローラー」の部品を追加。
-独自のUIViewControllerのサブクラスを追加。
-Identity Inspectorでビューコントローラーの部品のクラスを...
**ナビゲーションコントローラーの2番目のビューコントローラ...
-[[ios - Cannot add Bar Button to Second Page through Int...
-もしくはコードで設定する。
**ステータスバーまわりのはなし [#v9f01d4b]
-[[やはりお前らのiOS7対応は間違っている(解説編) - Qiita:h...
**自動レイアウトでパーセンテージ指定 [#hd6d0887]
-2つのコントロールを選択して「Pin」でEqual WIdth or Equal...
-Constrainsを選択肢、Attributes InspectorでMultiplierを指...
*トラブルシューティング [#o7276908]
**Scene is unreachable due to lack of entry points [#y947...
-[[ios - Scene is unreachable due to lack of entry points...
**UITableViewControllerで行が表示されない [#v4157fbc]
-UITableViewControllerではdatasourceやdelegateを自分で設...
-最低限以下のようなメソッドを表示すればデータが表示される...
#pre{{
override func numberOfSections(in tableView: UITableV...
// #warning Incomplete implementation, return the...
return 1
}
override func tableView(_ tableView: UITableView, num...
return rows.count
}
override func tableView(_ tableView: UITableView, cel...
let cell = tableView.dequeueReusableCell(withIden...
cell.textLabel!.text = rows[indexPath.row]
return cell;
}
}}
-落とし穴として、テンプレートのnumberOfSectionsのデフォル...
**Interface Builder上でだけナビゲーションバーが表示される...
-View Controllerのプロパティで、Simulated Metrixを確認す...
終了行:
&tag(Storyboard);
*目次 [#ff073cc6]
#contents
*関連ページ [#h2ee4744]
-[[Xcode]]
-[[UIKit]]
-[[./セグエ]]
-[[./分割して使う]]
-[[./StoryboardReference]]
-[[./AutoLayout]]
*参考情報 [#t1aa4d0a]
-[[[iOS]これからiOSアプリを作る方向け Storyboardで画面遷...
*概要 [#y23e5151]
-画面遷移の仕組み
*全般 [#pa5e7896]
**ストーリーボードのデバイスがデカイ? [#ke7d76f9]
-一応仕様らしい。ただしIBでView Controllerを選択しSimulat...
-iPhoneに固定することもできるらしい。[[SwiftをiOSシミュレ...
**Storyboardを使わない方法に関して [#s9a8a6c2]
-[[StoryBoardを使わない方法 - Qiita:http://qiita.com/shou...
-[[Q. StoryboardとXIBはどう使い分ければいいんだろうか? -...
-以上を踏まえ、Appleが標準としてStoryboardを押しているこ...
*ビューコントローラー [#r8173a1e]
**初期ビューコントローラーを指定する [#c2fcdf50]
-左側に矢印のついたビューコントローラーがないと何も表示さ...
-Attributes Inspectorを開き、View Controllerの「Is Initia...
**プログラムコードからストーリーボードのビューコントロー...
-以下のように呼び出す
#pre{{
let storyboard = UIStoryboard(name: "Main", bundl...
let vc:UIViewController = storyboard.instantiateV...
let webViewController = vc as! WebViewController
webViewController.initialUrl = urlString
self.navigationController!.presentViewController(...
}}
-呼び出し先のビューコントローラーには、Storyboard IDを割...
*テーブルビュー [#jc45a166]
**一番上のセルがステータスバーにかぶってしまう [#i755c643]
-最初にテーブルのサイズをステータスバー以下にしておいてAu...
-上限に設定するとかぶるが、ステータスバーの下にしてから始...
-コードで以下のようにするのはサイズが異なるデバイスで対応...
self.tableView.contentInset = UIEdgeInsets(top: 2...
**左右のマージン [#a8d5b827]
-Pinの設定でConstraint to Marginのせい。
**UITableViewControllerを使う [#fba5a154]
-Single View Applicationで作成。
-ViewController.swiftを削除。
-Main.storyboardの中のView Controllerを削除。かわりにTabl...
--Attributes InspectorのView Controllerセクションにある「...
-「File > New」からUITableViewControllerクラスのサブクラ...
-Table View ControllerのクラスをMyTableViewControllerとす...
-UITableViewControllerにナビゲーションコントローラーやツ...
※UITableViewControllerを使わないと、Static Cellsが使えな...
*ナビゲーションコントローラー [#rdd06163]
**ナビゲーションコントローラーを使う [#d9f032de]
-[[Xcode6.xのStoryboardにてToolBar(下のバー)が出ない人...
-既存のView Controllerを選択し、「Editor > Embed in > Nav...
※ちなみに[[ios - StoryboardのNavigation Barの存在理由 - ...
**ナビゲーションコントローラーに編集ボタンを追加 [#r031d9...
-上の方法でナビゲーションコントローラーを追加した場合、Vi...
#pre{{
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view...
self.navigationItem.rightBarButtonItem = self.edi...
}
}}
**ナビゲーションコントローラーにCancel/Doneボタンを追加す...
-Bar Button Itemをドラッグして、ボタンの種類をCancel、Don...
**ナビゲーションコントローラーにツールバーを表示する [#p7...
-ナビゲーションコントローラーを使っている場合、Attributes...
-Interface Builderで操作してもだめ。
**ナビゲーションコントローラーのツールバーの表示非表示を...
-例えば編集ボタンが押されたとき、ツールバーを非表示にした...
#pre{{
override func setEditing(editing: Bool, animated: Boo...
super.setEditing(editing, animated: animated);
self.navigationController?.setToolbarHidden(editi...
}
}}
*画面遷移 [#i0862f70]
**画面遷移の基本 [#w1d7d4f0]
-あるビューコントローラーから他のビューコントローラーをPr...
-ビューコントローラーのアイコンを他のビューコントローラー...
-呼び出し元のボタンタップやテーブルセルタップで、performS...
#pre{{
func tableView(_ tableView: UITableView, didSelectRow...
if tableView.isEditing {
let shelf = fetchedResultsController.object(a...
performSegue(withIdentifier: "editShelf", sen...
} else {
let shelf = fetchedResultsController.object(a...
performSegue(withIdentifier: "listBook", send...
}
}
}}
**戻る処理 [#wcda5875]
-戻り先のUIViewControllerに以下のメソッドを作成。
#pre{{
@IBAction func unwindToTop(segue: UIStoryboardSegue) {
}
}}
-Interface Builderで遷移先のボタンなどを選択し、Exitボタ...
-手動で戻りたい場合は、ViewController自身をExitボタンにド...
#pre{{
self.performSegue(withIdentifier: "back",...
}}
*Tips [#veab801d]
**独自のUIViewControllerを使用する [#yc7b2ade]
-Storyboardで「ビューコントローラー」の部品を追加。
-独自のUIViewControllerのサブクラスを追加。
-Identity Inspectorでビューコントローラーの部品のクラスを...
**ナビゲーションコントローラーの2番目のビューコントローラ...
-[[ios - Cannot add Bar Button to Second Page through Int...
-もしくはコードで設定する。
**ステータスバーまわりのはなし [#v9f01d4b]
-[[やはりお前らのiOS7対応は間違っている(解説編) - Qiita:h...
**自動レイアウトでパーセンテージ指定 [#hd6d0887]
-2つのコントロールを選択して「Pin」でEqual WIdth or Equal...
-Constrainsを選択肢、Attributes InspectorでMultiplierを指...
*トラブルシューティング [#o7276908]
**Scene is unreachable due to lack of entry points [#y947...
-[[ios - Scene is unreachable due to lack of entry points...
**UITableViewControllerで行が表示されない [#v4157fbc]
-UITableViewControllerではdatasourceやdelegateを自分で設...
-最低限以下のようなメソッドを表示すればデータが表示される...
#pre{{
override func numberOfSections(in tableView: UITableV...
// #warning Incomplete implementation, return the...
return 1
}
override func tableView(_ tableView: UITableView, num...
return rows.count
}
override func tableView(_ tableView: UITableView, cel...
let cell = tableView.dequeueReusableCell(withIden...
cell.textLabel!.text = rows[indexPath.row]
return cell;
}
}}
-落とし穴として、テンプレートのnumberOfSectionsのデフォル...
**Interface Builder上でだけナビゲーションバーが表示される...
-View Controllerのプロパティで、Simulated Metrixを確認す...
ページ名: