クラスを作成せずに、またはMainstoryboardを使用して動的にUIViewControllerを作成したいと思います。プログラムで発生させたいのですか? 動的データに応じてUIViewControllerを作成したいと思います。Swiftでuiviewcontrollerを動的に作成する
答えて
はい、プログラムで動的にビューを作成できます。私はあなたがクラスを使いたくないと言ったのを知っていますが、本当にする必要があります。しかし、キーは、このクラスにUIをハードコードする必要はなく、ダイナミックに構築することです。
UIViewController
をサブクラス化できますが、ビューを動的に構築するために必要なデータを渡してから、loadView
メソッドを実装します。 NIBやストーリーボードのシーンは必要ありません。 view
を作成し、動的データに基づいてサブビューを作成してください。これは、従来のView Controller Programming Guideに記載されています。このドキュメントの一部は適用されなくなりました。特に「アンロード」ビューのディスカッションには適用されません。loadView
プロセスについては説明して説明していますが、それでも正常に動作します)。
あなたが見ることができるように、
パスのいずれか(カスタムloadView
法)ストーリーボード/ NIBワークフローをバイパス次のようにビューコントローラです。このプロセスを実行する場合は、UIView
オブジェクトをインスタンス化し、ビューコントローラのview
プロパティを設定する必要があります。また、ではなくsuper.loadView()
を実装してください。
私はちょうどスウィフト3で、ビューにUILabel
オブジェクトの束を追加したい場合たとえば、あなたのような何かを行うことができます:
class DynamicViewController: UIViewController {
var strings: [String]!
override func loadView() {
// super.loadView() // DO NOT CALL SUPER
view = UIView()
view.backgroundColor = .lightGray
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .vertical
view.addSubview(stackView)
NSLayoutConstraint.activate([
stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
for string in strings {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = string
stackView.addArrangedSubview(label)
}
}
}
をそして、あなたはそうのようにそれを提示することができます:
@IBAction func didTapButton(_ sender: AnyObject) {
let controller = ViewController()
controller.strings = ["Hello world", "Foobar", "Baz"]
show(controller, sender: sender)
}
(スイフト2レンディションは、previous revision of this answerを参照。)
これを言って、NIBやストーリーボードを使わないことになぜ心配しているのか分かりません。ただ空白のものを使用してください。そして、プログラムでコントロールをシーンに動的に追加することもできますが、viewDidLoad
で行うことができます。上記とまったく同じ効果が得られますが、かなり古くなったloadView
技術を使用したり、view
プロパティをインスタンス化して読み込んだりする必要はありません。
- 1. Swift:動的オブジェクトの作成
- 2. インポートSwiftクラスを動的に作成
- 3. Swiftで動的文字列のラベルバックグラウンドを作成する
- 4. textFieldの名前を動的に作成する方法[SWIFT]?
- 5. メインUiViewControllerの子UiViewControllerを動的に宣言する
- 6. uiviewcontrollerをプログラム的に弱く作成する
- 7. Swift - インスタンス化Nibから常にUIViewController型を返す代わりに動的型
- 8. Swiftのforループを使用してUIButtonを動的に作成
- 9. UIViewControllerをUIScrollView swiftに追加する
- 10. postMessageで動作する動的iframeを作成するには
- 11. SWIFT 3のUITableViewにセクションとセルを動的に作成する方法
- 12. jQueryで動的フォームの動的プレビューを作成するには
- 13. reactjsで動的コンポーネントを動的に作成する方法は?
- 14. 動的に作成されたswift 3/xcodeラベルの行間
- 15. json response swiftから動的にテキストフィールド、ボタンを作成できますか?
- 16. CheckBoxを動的に作成する動的に作成されたGridView
- 17. 動的ページに動的ボタンを作成
- 18. UIViewControllerのiPadバージョンを作成するxxx
- 19. SwiftでUISliderを自動的に移動
- 20. 動的に成長するテーブルをHTMLで作成する
- 21. Swiftでカレンダービューを作成するには
- 22. Swiftでoath_signatureを作成するには?
- 23. JavaScriptで動的オブジェクトを作成する
- 24. レールで動的ルートルートを作成する
- 25. jqueryで動的グリッドを作成する
- 26. Tableauで動的フィルタを作成する
- 27. Javaで動的クラスを作成する
- 28. Javascriptで動的オブジェクトを作成する
- 29. Railsで動的スコープヘルパーを作成する
- 30. WordPressで動的URLを作成する
'let viewController = UIViewController()' =)もっと深い答えを得るために、コードをよく説明してください。 –
ok.Iこれを試してみます –