如何在 ViewController 中调用视图?

Posted

技术标签:

【中文标题】如何在 ViewController 中调用视图?【英文标题】:How to call a view within a ViewController? 【发布时间】:2017-03-17 12:00:41 【问题描述】:

我有一个名为IndicatorView 的视图,它是UIView 的子类。对于这个视图,我也有一个 xib 文件。我想在我的 ViewController 中使用UITapGestureRecongnizer 调用这个视图,我已经能够做到这一点。我的问题在于点击时如何调用视图。应该将什么代码添加到我的UIView 文件中,以便我可以从xib 文件中调用它。提前致谢。

【问题讨论】:

【参考方案1】:

要以编程方式从 xib 文件中获取对象,您可以使用:[[NSBundle mainBundle] loadNibNamed:@"MyXibName" owner:self options:nil]

现在,在UITapGestureRecongnizer 的点击事件中添加以下代码。

ObjC

IndicatorView *objIndicator = [[[NSBundle mainBundle] loadNibNamed:@"IndicatorView" owner:self options:nil] objectAtIndex:0];
[self.view addSubview:objIndicator]; 

斯威夫特 3

var objIndicator: IndicatorView? = Bundle.main.loadNibNamed("IndicatorView", owner: self, options: nil)[0]
self.view.addSubview(objIndicator)

注意:你可以在self.view的地方传入你要添加的视图

【讨论】:

但是你为什么要创建两个视图,rootViewmyVIew 如果问题不大,能否请您尽快提供? 好的,我也在更新。 应用程序似乎崩溃了,在日志中给出了这个reason: '[<gesturerecognizer.ViewController 0x7fcc6ad088f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key testLabel.' testLabel 是该视图中的一个标签。我需要在IndicatorView.swift 文件中添加什么吗? 请检查 testLabel 的 IBOutlet。

以上是关于如何在 ViewController 中调用视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从swiftui视图调用uikit viewcontroller方法

如何从 Popover 调用主视图控制器的方法?

调用dismiss方法后如何刷新ViewController

在调用 viewController 之前调用 ViewController 方法的问题

在 viewDidLoad 之前调用 ViewController 上的自定义 init 方法

从 xib 调用 viewController