2010-08-09 90 views
1

好我的問題:訪問編程方式創建的UILabel

我有函數來創建一個標籤:

- (void)crateBall:(NSInteger *)nummer { 
    UILabel *BallNummer = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)]; 
    BallNummer.text = [NSString stringWithFormat:@"%i", nummer]; 
    [self.view addSubview:BallNummer]; 
} 

現在我想訪問該標籤的其他功能更改文本,框架等。

這些標籤的數量是動態的,所以我不想在.h文件中聲明每個標籤。 (我不平均數量的.text = 123我的意思是在視圖中的標籤數)

回答

4

所有的UIView子類具有整數tag財產你的目的

- (void)crateBall:(NSInteger *)nummer { 
    UILabel *BallNummer = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)]; 
    BallNummer.text = [NSString stringWithFormat:@"%i", nummer]; 
    BallNummer.tag = *nummer; 
    [self.view addSubview:BallNummer]; 
    [BallNummer release]; 
} 

以後,你可以得到使用-viewWithTag:這個標籤功能:

UILabel *ballNummer = (UILabel*)[self.view viewWithTag:nummer]; 

PS當你經過指針爲int給你的函數(你真的需要這樣做呢?),你應該取消對它的引用利用其價值之前:

BallNummer.text = [NSString stringWithFormat:@"%i", *nummer]; 

P.P.S.不要忘了發佈標籤(我已經添加了發佈到我的代碼) - 您的代碼泄漏內存

+0

謝謝,錯字 – Vladimir 2010-08-09 08:19:46

+0

非常感謝你的工作很好:D – Mario 2010-08-09 08:22:36

0

您可以使用UIView'標籤屬性來標記您的子視圖,並創建一個函數來訪問您的標籤

- (void)createLabels { 
    UILabel *label; 

    label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)]; 
    label.tag = 1; 
    [self.view addSubview:label]; 

    label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)]; 
    label.tag = 2; 
    [self.view addSubview:label]; 

    //etc... 
} 

-(UILabel*) getLabel:(NSInteger) index { 
    return [self.view viewWithTag:index]; 
} 
相關問題