现在我有两个Controller,一个是FirstViewController,一个是SecondViewController。
在 FirstViewController 中
var secondViewController: SecondViewController!
let textView: UITextView = {
let textView = UITextView()
//textView.font = UIFont.systemFont(ofSize: 20)
textView.isEditable = true
textView.keyboardDismissMode = .interactive
textView.allowsEditingTextAttributes = true
return textView
}()
override func viewDidLoad() {
super.viewDidLoad()
secondViewController = SecondViewController()
secondViewController.firstViewController = self
setUpLayout()
addKeyboardObserver()
// Do any additional setup after loading the view, typically from a nib.
}
然后我添加一个按钮以将 secondaryViewController 的 View 显示为自定义键盘
@objc func showSecondView() {
textView.resignFirstResponder()
textView.inputView = secondViewController.view
textView.becomeFirstResponder()
}
然后在SecondViewController中,如图所示,现在我想在SecondViewController中添加一个导航栏,怎么做?(我可以使用 Storyboard来做到这一点,但我不能使用代码来做到这一点)。 我想在选择 SecondViewController 中的 tableView(红色区域)时显示 ThirdViewController,并且 ThirdViewController 的 View 将显示在红色区域,而不是整个屏幕,(就像 Storyboard 的“显示”连接一样)我该怎么做?
最佳答案
您必须从 Root View Controller 获取导航 Controller ,以便您可以随时隐藏和显示,您可以做的另一件事是,为特定 View Controller 获取导航 View Controller 。但是您无法导航(推送)任何导航 View Controller 。你只能呈现它。检查下面我的代码
import UIKit
class ViewControllerWithoutNavigation: UIViewController { // This is without navigation
override func viewDidLoad() {
super.viewDidLoad()
}
func gotoNextViewController(){
let nvc = UINavigationController(rootViewController: ViewControllerWithNavigation())
let transition = CATransition()
transition.duration = 0.25
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
self.view.window!.layer.add(transition, forKey: kCATransition)
//transition is to show like pushing, Without it it will look like presenting from bottom
self.present(nvc, animated: false, completion: nil)
}
}
class ViewControllerWithNavigation: UIViewController { // This is with navigation
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
}
}
关于ios - 如何在 swift 中通过代码添加导航栏并显示另一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51892728/