【问题标题】:Adding subview and bringing to front, but still not showing添加子视图并放在前面,但仍未显示
【发布时间】:2019-04-06 23:23:15
【问题描述】:

我正在尝试创建一个简单的 Xcode 应用程序,只需按一下按钮,就可以将侧面板滑出。我知道有很多教程,但是由于各种原因,我还没有找到任何可以满足我特别需要的教程。 我尝试采取的第一步是在按下按钮时弹出一个新视图(完全位于我的第一个 VC 之上),但我遇到了问题。

按下我的按钮时会调用以下函数:

let otherVC = OtherViewController()
self.view.insertSubview(otherVC.view, at: 0)
self.view.bringSubviewToFront(otherVC.view)

OtherViewController 在 Storyboard 中设置,我知道它的 viewDidLoad 函数是用上面的代码调用的......我只是不明白为什么完全没有任何反应,而另一个 VC 没有出现。我还应该做些什么来达到我想要的结果吗?

【问题讨论】:

  • 添加viewcontroller作为childViewController。 3行代码:addChildViewController(otherVC); view.addSubview(otherVC.view); otherVC.didMove(toParentViewController: self)
  • 执行UI-Debugging 以查看您的视图边界以及您的视图是否在视图层次结构中。

标签: swift xcode uiview uiviewcontroller


【解决方案1】:

你不能通过像任何其他对象一样启动视图控制器来调用视图控制器,故事板中的视图不会附加到它

相反,

let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 
let otherVC = storyboard.instantiateViewController(withIdentifier: "OtherViewController") as! OtherViewController

除此之外,您还必须为 storyBoard 中的 viewController 分配一个 Storyboard Id。

You have to add the Storyboard ID here

之后,您应该查看 UIView Containment 以获得更多帮助

【讨论】:

  • 非常感谢!!!用这种方法,能不能做成侧面板(只占屏幕的一部分)?
  • 是的,但是您必须相应地调整视图的框架,假设您想添加一个类似于 android 中的侧边菜单,我会推荐一个库 github.com/jonkykong/SideMenu 而不是重新发明轮子。该库有一个文档部分,您可以查看。希望这能给你一些从哪里开始。
猜你喜欢
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 2019-03-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多