【问题标题】:Show a view on every view controller在每个视图控制器上显示一个视图
【发布时间】:2018-07-27 02:37:26
【问题描述】:

我必须在当前视图控制器上显示一个在接收推送通知时显示的视图。我希望我制作一个可以作为插件添加到我当前视图控制器的视图,以便尽管向每个视图控制器添加相同的视图。我只是将当前显示的视图控制器添加到它。

请帮我解决这个问题。

另外,视图包含一些按钮 - 那么我应该在哪里添加按钮操作。

【问题讨论】:

  • 在 BaseViewController 中添加你的 UIView 并且你所有其他的 viewController 都应该是那个的子类,这会让你在任何 viewController 中显示你的视图
  • 将视图添加到您的应用程序的容器视图控制器(UINavigationController,UITabBarController)中,它将显示在完整的应用程序中。

标签: ios swift3 uiview uiviewcontroller xib


【解决方案1】:

您可以编写UIViewController 的扩展名。像这样。

extension UIViewController {    
    func showNotificationView() {
        let notiView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 50))
        notiView.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
        notiView.backgroundColor = .red
        self.view.addSubview(notiView)

        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
        button.addTarget(self, action: #selector(callbackButton(_:)), for: .touchUpInside)
        button.backgroundColor = .green
        notiView.addSubview(button)
    }

    @objc func callbackButton(_ sender:Any) {
        // button callback
    }
}

【讨论】:

  • 好吧,函数被调用了,但是视图没有显示在屏幕上。
【解决方案2】:

如果你在窗口上显示 ViewController 来显示推送会很好。在 window 上我们不需要关心当前可见的控制器。

【讨论】:

  • 请详细说明实现方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多