2012-08-15 51 views
0

我的应用程序创建一个标签访问定义标签本地

 -(void)addLabel:(float)x:(float)y:(float)w:(float)h:(NSString *)text { 
     CGRect label1Frame = CGRectMake(x, y, w, h); 
     UILabel *label1 = [[UILabel alloc] initWithFrame: label1Frame]; 
     label1.text = text; 
     [self.view addSubview:label1];} 

然后,我打电话从其他方法这个方法的方法。

如何访问其中一个标签以将其从超级视图中移除,因为我没有var名称。

回答

1
-(void)addLabel:(float)x :(float)y :(float)w :(float)h :(NSString *)text tag:(NSInteger)tag { 
    CGRect label1Frame = CGRectMake(x, y, w, h); 
    UILabel *label1 = [[UILabel alloc] initWithFrame: label1Frame]; 
    label1.tag = tag; 
    label1.text = text; 
    [self.view addSubview:label1]; 
} 

然后通过在适当的tag值(整数),这是唯一的。然后使用:

UILabel *label = (UILabel *)[self.view viewWithTag:someIntID]; 

来访问它。

+1

您忘记了标签:o – ohr 2012-08-15 20:54:57

+0

@ohr fixed :)谢谢 – 2012-08-15 20:55:37

0

您需要为它创建一个ivar /属性。如果你不想让你的界面上这个标签,声明一个类扩展您的实现文件中,并宣布你的标签

@interface yourclass() 
@property (nonatomic, weak)UILabel *yourLabel; 
@end 

记住你的@synthesize添加到您的实现文件。将标签添加为子视图后,将值分配给属性。

+0

你不需要**。另外,OP的方法似乎是一种工厂方法 - 因此标签的数量是在运行时动态决定的,因此在编译时不能轻松添加属性(实际上可以动态地添加属性,使用Objective -C运行时,但这是一个很大的交易)。 – 2012-08-15 20:53:28