如何检查控件是不是已添加到视图中?

Posted

技术标签:

【中文标题】如何检查控件是不是已添加到视图中?【英文标题】:How to check if a control has been already added to the view?如何检查控件是否已添加到视图中? 【发布时间】:2009-09-13 20:30:35 【问题描述】:

我在视图上添加了一个标签 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 320.0f, 300.0f, 75.0f)]; [titleLabel setText:[BusinessLogic 实例].homeMessage];

然后我移动到另一个视图并返回。这导致两个标签控件彼此重叠。我想做的是: 检查是否已经添加了标签控件。如果不添加它并设置文本。如果是,只需设置文本即可。

最好的方法是什么。我想学习正确的方法,因为我已经有了一些令人作呕的方法。

谢谢。 甲乙

【问题讨论】:

【参考方案1】:

你可以查看superview属性:

if (titleLabel.superview == self) 

(假设“self”是您要添加标签的视图)

【讨论】:

我想说,他应该先将 UILabel 变量移到函数之外。然后检查是否为零。【参考方案2】:
if (titleLabel.superview != someView) 
    [someView addSubview:titleLabel];

【讨论】:

【参考方案3】:

向您的类添加一个属性以存储对您的标签的引用。如果你不把它存储在任何地方,你以后就不能轻易地改变它的文本:

// header
@property (nonatomic, retain) IBOutlet UILabel *titleLabel;
// implementation
@synthesize titleLabel;

如果titleLabelnil,则创建UILabel 实例并分配给它:

if (self.titleLabel == nil) 
   UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 320.0f, 300.0f, 75.0f)];
   self.titleLabel = titleLabel;
   [titleLabel release];
   // add to the view here.

self.titleLabel.text = newText;

【讨论】:

小错字:@synthesis -> @synthesize

以上是关于如何检查控件是不是已添加到视图中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个视图中处理多个分段控件的事件

c# 在groupbox控件中判断的内嵌的radiobutton是不是已选

如何将工具提示添加到 Telerik 树视图

检查打开的窗口是不是已关闭

如何在表格视图的标题中添加多个单元格(不是部分标题)?

如何添加到自定义列表视图用户控制编辑项目列组等任务?