Navigation Bar and Side Menu with Storyboard Practice
12814 ワード
この文章はSide Menuがどのようにスクリーンを弾いたのかではありません.既存の画面を押し開きたい場合は、次のリファレンスビデオリンクを使用してビデオを表示します.
リファレンス映像
https://www.youtube.com/watch?v=Hl_Re_KLhcY
次のように、シーケンスイメージボード上の2つのTable Viewを無視してください.1つ目の目的は、シーケンスイメージボードからナビゲーションバーを追加することです.
画面上部のEditorを選択すると、下はEmbed In、下はNavigation Controlになります.ナビゲーションバーコントローラを作成するには、このボタンをクリックします.
下図のようにNavigation Bar Controllerが作成されています.
追加後、ナビゲーションコントローラがIs初期ビューコントローラではないことを確認してください.そうでない場合、Simulatorは黒い画面だけを表示します.
ボタンを追加する必要があります.Barを検索すると、次のようにBar Button Itemが表示されます.
ドラッグ&ドロップで目的の場所に追加します.右側にボタンを付けて、右側にSide Menuが見えるようにしました.
ユーザーがボタンを押すと、表示する画面を特定する必要があります.ボタンをクリックすると、右側からTable Viewが見えます.そのためには、Table View Controlを含むコンテンツビューコントローラを適切な場所に追加してください.
右側に新しいビューコントローラが追加されます.必要なビューコントローラはTable Viewで、削除後にTable View Controlを追加します.次に、キーボードコントロールキーを押しながら、以前に追加したコンテンツビューコントローラをTable Viewにドラッグします.選択可能な項目は下図のようにEmbedを選択してください.
Table View Controlオブジェクトファイルを個別に作成し、クラスを指定しました.任意のラベルが同時に追加されました.
Reuse Identifierの設定も忘れないでください.
作成したTable View Controllerオブジェクトファイルで、次のコードを記述します.textLabel.textに入力したのは、私がランダムに配列に置いた表情です.
まず、現在のコンテンツビューの幅を固定サイズに設定します.次に、セキュリティ領域の上部と下部にLayoutを設定することによって、Trailing(左側から表示される場合、Contenter View Controlをシーケンスイメージボードの一番左側に配置し、Leading)を幅の負の値(私の場合-402)に設定します.
Contenter View Controllerは、以下のように非表示になります.
次に、ViewControllerにNSLayoutConstraintを追加します.
ViewControllerを変更する前に、次のようにContenter View Controllerオブジェクトを作成します.
リファレンス映像
https://www.youtube.com/watch?v=Hl_Re_KLhcY
次のように、シーケンスイメージボード上の2つのTable Viewを無視してください.1つ目の目的は、シーケンスイメージボードからナビゲーションバーを追加することです.
画面上部のEditorを選択すると、下はEmbed In、下はNavigation Controlになります.ナビゲーションバーコントローラを作成するには、このボタンをクリックします.
下図のようにNavigation Bar Controllerが作成されています.
追加後、ナビゲーションコントローラがIs初期ビューコントローラではないことを確認してください.そうでない場合、Simulatorは黒い画面だけを表示します.
ボタンを追加する必要があります.Barを検索すると、次のようにBar Button Itemが表示されます.
ドラッグ&ドロップで目的の場所に追加します.右側にボタンを付けて、右側にSide Menuが見えるようにしました.
ユーザーがボタンを押すと、表示する画面を特定する必要があります.ボタンをクリックすると、右側からTable Viewが見えます.そのためには、Table View Controlを含むコンテンツビューコントローラを適切な場所に追加してください.
右側に新しいビューコントローラが追加されます.必要なビューコントローラはTable Viewで、削除後にTable View Controlを追加します.次に、キーボードコントロールキーを押しながら、以前に追加したコンテンツビューコントローラをTable Viewにドラッグします.選択可能な項目は下図のようにEmbedを選択してください.
Table View Controlオブジェクトファイルを個別に作成し、クラスを指定しました.任意のラベルが同時に追加されました.
Reuse Identifierの設定も忘れないでください.
作成したTable View Controllerオブジェクトファイルで、次のコードを記述します.textLabel.textに入力したのは、私がランダムに配列に置いた表情です.
class SideMenuTableViewController: UITableViewController {
private let logData = LogData()
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return logData.logData.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SideMenuCell", for: indexPath)
cell.textLabel?.text = logData.logData[indexPath.row].emoji
return cell
}
}
結果は次のとおりです.左の2つのテーブルを無視して、右のテーブルだけを考えます.まず、現在のコンテンツビューの幅を固定サイズに設定します.次に、セキュリティ領域の上部と下部にLayoutを設定することによって、Trailing(左側から表示される場合、Contenter View Controlをシーケンスイメージボードの一番左側に配置し、Leading)を幅の負の値(私の場合-402)に設定します.
Contenter View Controllerは、以下のように非表示になります.
次に、ViewControllerにNSLayoutConstraintを追加します.
@IBOutlet weak var sideMenuTrailingLayout: NSLayoutConstraint!
そして、IBOUTLEの左側に空の円が現れます.これは、以前にシーケンスイメージボードで使用したTrailing Constraintに関連付けられます.「Side Menu Trailing L.」は、下図の一番下の3番目の位置にあります.接続されているかどうかを確認できます.次の画像は接続されていますが、接続されていない場合は別の名前です.これは、接続する前に、次の画像とは異なるように見えることを意味します.ViewControllerを変更する前に、次のようにContenter View Controllerオブジェクトを作成します.
class ContainerViewController: UIViewController {
var sideMenuOpen = false
override func viewDidLoad() {
super.viewDidLoad()
}
}
ViewControllerでは、ナビゲーションバーのボタンを以下のように接続し、@Ibaction、コンテナViewController、Containerメソッドを作成します.class ViewController: UIViewController {
@IBOutlet weak var sideMenuTrailingLayout: NSLayoutConstraint!
@IBOutlet weak var sideMenuButton: UIBarButtonItem!
@IBAction func sideMenuToggled(_ sender: Any) {
if containerViewController.sideMenuOpen == false {
containerViewController.sideMenuOpen = true
sideMenuTrailingLayout.constant = 0
} else {
containerViewController.sideMenuOpen = false
sideMenuTrailingLayout.constant = -402
}
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
var containerViewController: ContainerViewController!
override func viewDidLoad() {
super.viewDidLoad()
tableViewDelegate()
configureContainer()
}
private func configureContainer() {
containerViewController = ContainerViewController()
}
}
ユーザーがその意味を説明すると、ContenterView Controlはボタンを押す前にsideMenuOpenを同時に非表示にし、ユーザーがボタンを押すとsideMenuOpenはtrueになり、sideMenuTrailingLayoutも非表示になります.constantを0にして画面に表示します.Reference
この問題について(Navigation Bar and Side Menu with Storyboard Practice), 我々は、より多くの情報をここで見つけました https://velog.io/@panther222128/Navigation-Bar-and-Side-Menu-with-Storyboard-Practiceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol