Я пытаюсь реализовать боковое навигационное меню (такое, которое есть у нас в Android) в iOS App. До сих пор я пробовал следующее: -
AppDelegate.swift: -
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var bridge: RCTBridge!
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let sb = UIStoryboard(name: "mystoryboard", bundle: Bundle.main)
let rootViewController: UIViewController =
sb.instantiateViewController(withIdentifier:
"NativeLabelSwiftViewController") as UIViewController
let navigationController = UINavigationController(rootViewController:
rootViewController)
window = UIWindow(frame: UIScreen.main.bounds)
window!.rootViewController = navigationController
window!.makeKeyAndVisible()
return true
}
Выше приведен мой класс AppDelegate, так как это проект React Native, у нас также есть сгенерированный код. Для добавления моего rootViewClass добавлен следующий код (NativeLabelSwift)с помощью следующего кода: -
let sb = UIStoryboard(name: "mystoryboard", bundle: Bundle.main)
let rootViewController: UIViewController =
sb.instantiateViewController(withIdentifier:
"NativeLabelSwiftViewController") as UIViewController
NavigationLabelSwiftViewController.swift (класс настраиваемого представления): -
class NativeLabelSwiftViewController: UIViewController{
var bridge: RCTBridge!
override func viewDidLoad() {
super.viewDidLoad()
title = "Production Tracking"
let btn2 = UIButton(type: .custom)
btn2.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn2.addTarget(self,
action:#selector(NativeLabelSwiftViewController.
onBtn2Clicked.(_:)), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: btn2)
self.navigationItem.setLeftBarButton(item2, animated: true)
}
@IBAction func onBtn2Clicked(_ sender: UIBarButtonItem) {
if let navViewController = self.navigationController as?
NavigationController {
// navigation view controller is available
}
else{
// navigation view controller not available
}
}
}
Контроллер навигации имеет класс UIViewController (NativeLabelSwiftViewController), имеющий кнопку на панели вкладок. При нажатии кнопки мне нужно получить доступ к методу контроллера навигации. Но я не могу получить контроллер навигации, используя следующий код: -
let navViewController = self.navigationController as?
NavigationController; //this is NIL
Но
let uiViewController = self.navigationController as?
UINavigationController; //this is not NIL