クラスを作成せずに、または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. メインUiViewControllerの子UiViewControllerを動的に宣言する
- 5. uiviewcontrollerをプログラム的に弱く作成する
- 6. Swiftのforループを使用してUIButtonを動的に作成
- 7. postMessageで動作する動的iframeを作成するには
- 8. SWIFT 3のUITableViewにセクションとセルを動的に作成する方法
- 9. CheckBoxを動的に作成する動的に作成されたGridView
- 10. UIViewControllerのiPadバージョンを作成するxxx
- 11. SwiftでUISliderを自動的に移動
- 12. Swiftでカレンダービューを作成するには
- 13. 動的に成長するテーブルをHTMLで作成する
- 14. Swift 2.3のUIAlertViewからUIViewControllerに移動します。
- 15. Javaで動的クラスを作成する
- 16. JavaScriptで動的オブジェクトを作成する
- 17. Javascriptで動的オブジェクトを作成する
- 18. Railsで動的スコープヘルパーを作成する
- 19. Tableauで動的フィルタを作成する
- 20. jqueryで動的グリッドを作成する
- 21. 動的にプロキシクラスを作成する
- 22. カスタムクラスを動的に作成する
- 23. ファイルを動的に作成する
- 24. JavaScriptを動的に作成するオブジェクト
- 25. CustomValidatorを動的に作成するサーバーコントロール
- 26. RadEditorを動的に作成するasp.net
- 27. 約束を動的に作成する
- 28. ハイパーリンクを自動的に作成する
- 29. リンクを動的に作成する
- 30. 動的にテキストフィールドを作成する
'let viewController = UIViewController()' =)もっと深い答えを得るために、コードをよく説明してください。 –
ok.Iこれを試してみます –