如何使 iOS 子视图将自身添加到视图中

Posted

技术标签:

【中文标题】如何使 iOS 子视图将自身添加到视图中【英文标题】:How to make an iOS subview add itself to a view 【发布时间】:2011-06-17 06:36:39 【问题描述】:

我创建了一个“toast”风格的活动窗口类,我可以通过创建该类的一个实例来非常简单地添加它,然后使用 nib“toastView.xib”启动它并将其作为子视图添加到当前视图.

我想要做的是简化它,这样我只需要启动实例。然后,为了节省内存,我希望它只在弹出 toast 时添加子视图。目前,我使用两种方法之一来执行此操作,但为简单起见,假设它是-(void)loadWithLabel:(NSString *)labelString 发生这种情况时,我认为当前视图控制器必须将 toastView 传递给当前主视图。基于此视图,我希望 toastView 类将自身添加为子视图,因此我必须做更少的工作来在视图控制器中进一步实现这个 toast 窗口。如果你们有任何建议,将是最受欢迎的!很抱歉冗长,有点令人困惑:)

提前致谢!

所需行为的总结:

我当前的视图控制器(称为 currentView)分配并初始化一个 toastView 类的实例(称为“toast”)。当需要 toast 时,currentView 发送类似[toast loadToastInView:self.view]; 的东西,然后toast 将自己插入到索引 0 处的currentView.view。在设定的时间(或方法调用)之后,toast 从它的 superView,currentView 释放它的视图直到它再次被调用。

【问题讨论】:

【参考方案1】:

我会做一个单例并称之为 Toast。然后当我需要敬酒时,我会打电话给

[[Toast sharedInstance] loadToastInView:self.view]; 

[[Toast sharedInstance] removeToast]; 

Toast 单例将有一个名为 toastView 的 UIView 成员,在调用这些成员时添加/删除该成员,并在初始化时从 xib 加载

[[NSBundle mainbundle] loadNibNamed@"toastView" owner:self options:nil]

【讨论】:

感谢您的帮助!我还没有完成 Singleton 的建议,但这正是我正在寻找的。我现在得到的是它加载了自己的.xib,所以我可以调用toast.view,但我仍然需要输入[self.view addSubview:toast.view];我需要采取哪些步骤才能让 toastView 类将其视图加载为不同类的子视图?除非我从那个类中调用 [self.view addSubview:] ,否则我似乎做不到? 如果我正确理解了您的问题,Toast 类中的 loadToastInView: 方法应该可以处理该问题。它看起来像这样:- (void) loadToastInView: (UIView *) view [view addSubview:toastView]; 现在看起来很简单。非常感谢! 单身的想法太棒了。我早该想到的!它现在就像一种魅力,将来我基本上不需要做任何事情来实现我的吐司!再次感谢!

以上是关于如何使 iOS 子视图将自身添加到视图中的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 如何将子节点添加到树视图中的特定节点

当视图未将自身添加到其子视图时,“无法将自身添加为子视图”崩溃(带有示例代码)

如何在iOS中使子视图成为圆角作为超级视图?

iOS如何使透明视图的子视图不透明?

iOS:将子视图添加到倒数第二个位置

如何将子 ViewController 的视图添加到父 View 控制器的子视图中?