【问题标题】:Change the parent of a view更改视图的父级
【发布时间】:2023-04-07 22:57:02
【问题描述】:

我有一个表格视图,我会在从数据库中获得一些结果后显示它

@IBOutlet weak var resultSetView: UITableView!

我这个表视图已经在 ViewController 中制作了

我想把这个元素放在另一个视图中,比如停靠视图,也许可以通过编程方式。根据我的要求。 在不同的情况下,也许我想把它放在另一个位置。

我该怎么做?

【问题讨论】:

  • 您为什么不按照自己的意愿设置情节提要...?
  • 因为它是一个视图,它需要通过不同的按钮点击以编程方式填充。

标签: ios swift uikit


【解决方案1】:

类视图控制器:UIViewController {

 @IBOutlet weak var resultSetView: UITableView!
 @IBOutlet weak var nestedDockView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()


    nestedDockView.addSubview(resultSetView);


}

【讨论】:

  • 如果您想以编程方式执行此操作,请尝试此操作。虽然我个人只会在 xcode 内的文档大纲中将一个视图拖到另一个视图下。如果您希望它隐藏或稍后显示,您也可以在代码中执行此操作,但我更喜欢属性检查器。
  • 这个想法是在这个“nestedDockView”中拥有不同类型的视图。这就是为什么我要求就程序实施提供意见。会尝试一下,让你知道它是怎么回事。非常感谢安东尼奥
  • 这对安东尼奥有效。谢谢你。另外,有没有一种方法可以设置约束以每次都填充 100% 的 nestedDockView ,无论nestedDockVIew 的尺寸如何
  • 刚刚发现了一些东西。它适用于在控制器代码中创建的视图,但不适用于已经创建并在代码中具有连接器的视图。有解决办法吗?
【解决方案2】:

假设您的 tableView 被保留。您可以轻松做到这一点:

[tableView removeFromSuperview];

[dockView addSubview:tableView];

执行此操作时,请注意:

当您重新设置视图的父级时,它将从新父级继承新的布局约束,这可能与原始视图不同。

如果您想在 VC 中重新设置它,它应该可以工作,但它在软件设计和封装方面确实很混乱。

【讨论】:

  • 当我尝试重新设置视图时,视图不会添加到停靠视图中。为此我需要做些什么具体的事情吗?
  • 这是在同一个VC吗?你删除了tableView吗?确保 tableView 被保留。
猜你喜欢
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 2017-05-04
  • 2013-03-24
  • 2019-07-10
  • 1970-01-01
相关资源
最近更新 更多