Ios 如何在swift中添加导航栏并通过代码显示另一个控制器
现在我有两个控制器,一个是FirstViewController,一个是SecondViewController 在FirstViewController中Ios 如何在swift中添加导航栏并通过代码显示另一个控制器,ios,swift,Ios,Swift,现在我有两个控制器,一个是FirstViewController,一个是SecondViewController 在FirstViewController中 var secondViewController: SecondViewController! let textView: UITextView = { let textView = UITextView() //textView.font = UIFont.systemFont(ofSize: 20) textV
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.
}
然后我添加了一个按钮,将secondViewController的视图显示为自定义键盘
@objc func showSecondView() {
textView.resignFirstResponder()
textView.inputView = secondViewController.view
textView.becomeFirstResponder()
}
然后在SecondViewController中,如图所示,现在我想在SecondViewController中添加一个导航栏,如何?(我可以使用故事板,但不能使用代码)。
我想在选中SecondViewController中的tableView(红色区域)时显示ThirdViewController,并且ThirdViewController的视图将显示在红色区域,而不是整个屏幕上(就像故事板的“show”连接一样),我该怎么做
您必须从根视图控制器获取导航控制器,以便可以随时隐藏和显示,另一件事是,为特定视图控制器获取导航视图控制器。但您不能导航(推送)任何导航视图控制器。你只能展示它。检查下面的代码
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
}
}
添加导航控制器 在故事板中选择viewcontroller,然后转到编辑器->嵌入->导航控制器
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.
}
显示另一个视图控制器
*将情节提要id添加到导航控制器
*然后在操作中添加此代码
let storyBoard = UIStoryboard(name: "storyboard_name", bundle: nil)
let destination = storyBoard.instantiateViewController(withIdentifier: "storyboard_id")
self.navigationController?.pushViewController(destination, animated: true)