作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从主类 HomeController 访问类 MyNavigationBarController.swift 中的导航栏。这是因为我在不同的 View Controller 中重复使用导航栏,我想减少此时的冗余。当我将函数集成到 HomeController.swift 时,它工作正常。
但是,当我将导航类设为单独的类时,启动模拟器时不再显示导航栏。
我觉得问题出在“self.view”,但我不知道如何解决这个问题。
swift 4
HomeController.swift
class HomeController: UIViewController {
let myNavigator = MyNavigationBarController()
override func viewDidLoad() {
super.viewDidLoad()
// load navigation bar
myNavigator.setNavigationBar()
}
MyNavigationBarController.swift
class MyNavigationBarController: UINavigationController {
let navBar = UINavigationBar()
func setNavigationBar() {
navBar.translatesAutoresizingMaskIntoConstraints = false
let navItem = UINavigationItem(title: "")
let statusItem = UIBarButtonItem(title: "Status", style: .plain, target: self, action: #selector(status))
navItem.rightBarButtonItem = statusItem
navBar.setItems([navItem], animated: false)
self.view.addSubview(navBar)
}
@objc func status() {
print("hello")
}
最佳答案
你是对的。问题是 self.view
。您需要将其添加到 Controller 的 View 中。你可以改变你的功能,像这样:
func setNavigationBarInView(_ view:UIView) {
navBar.translatesAutoresizingMaskIntoConstraints = false
let navItem = UINavigationItem(title: "")
let statusItem = UIBarButtonItem(title: "Status", style: .plain, target: self, action: #selector(status))
navItem.rightBarButtonItem = statusItem
navBar.setItems([navItem], animated: false)
view.addSubview(navBar)
}
然后:
myNavigator.setNavigationBarInView(view)
关于swift - swift 从另一个类访问navigationBarController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273589/
我的 UIScollView 出现问题,无法正常工作。 所以这是我在这个视频中遇到的问题:https://www.youtube.com/watch?v=IeeCoGm9-b0&feature=you
我尝试使用 MVC 模式,其中我的 NavigationController 实例化并控制我的所有 View 和相应的 View 切换。为此,我只需实例化我的 navigationController
我是一名优秀的程序员,十分优秀!