如何使 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 子视图将自身添加到视图中的主要内容,如果未能解决你的问题,请参考以下文章