私はSwiftとiOSに比較的慣れていないので、私の問題に対する答えやヘルプが見つかりません。
前のビューでボタンをクリックしたときにNavigation Controllerビューを作成したい。私の以前のビューは、最後のページにボタンがあるオンボーディングです。ボタンを次のビューに正常に接続しましたが、ビューをNavigation Controllerのように動作させることはできません。たとえば、ナビゲーションバーが表示されているときに、ナビゲーションアイテムを追加できません。
最初のビューでボタンをクリックして作成した新しいビューを設定して、ナビゲーションビューのルートコントローラーにする方法はありますか?
私のコードの短いバージョン:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRect(x: view.frame.width / 2, y: view.frame.height / 2, width: 40, height: 40))
button.backgroundColor = .red
button.tintColor = .white
button.setTitle("Test", for: .normal)
button.addTarget(self, action: #selector(change), for: .touchUpInside)
view.addSubview(button)
}
func change () {
let otherView = SecondViewController()
self.present(otherView, animated: true, completion: nil)
}
}
class SecondViewController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .yellow
}
}
SecondViewControllerにはナビゲーションバーが表示されますが、ナビゲーションアイテムが表示されないため、実装に問題がありました。
私が提示する2番目のView Controllerは、UIViewControllerまたはUINavigationControllerタイプでなければなりませんか?
ストーリーボードを使用して目標を達成する簡単な方法があることを認識していますが、ストーリーボードからドラッグして作成するのではなく、コードを使用して独自の参照を作成することで、よりよく理解できます。
編集:Objective-Cのバックグラウンドはなく、Swift約4週間学習しています。
以下のようにUINavigationController
を追加できます:
まず、SecondViewController
のオブジェクトを作成する必要があります。
let objVC: SecondViewController? = storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
または
let objVC: SecondViewController? = SecondViewController(nibName: "SecondViewController", bundle: nil)
または
let objVC: SecondViewController? = SecondViewController()
次に、ナビゲーションをSecondViewController
に追加します
let aObjNavi = UINavigationController(rootViewController: objVC!)
提示する場合は、次を使用します。
self.present(aObjNavi, animated: true) {
}
プッシュする場合:
self.navigationController?.pushViewController(aObjNavi, animated: true)
ルートコントローラとして設定する場合は、次を使用します。
let appDelegate: AppDelegate = (UIApplication.shared.delegate as? AppDelegate)!
appDelegate.window?.rootViewController = aObjNavi
var objVC: UIViewController? = storyboard.instantiateViewController(withIdentifier: "ViewController")
var aObjNavi = UINavigationController(rootViewController: objVC)
現在、View Controllerオブジェクトを使用する代わりに、Navigation Controllerオブジェクトを使用します。