2014-07-02 66 views
24

我是objective-c的noob,我有一個問題。如何通過標記獲得uiview中的某個子視圖

我有我添加到一個UIView的與此代碼一個的UILabel對象:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,10,self.view.frame.size.width-15-70, 30)]; 
    label.tag = 1; 
    label.font = [PublicObject fontTexts:17]; 
    label.textAlignment = NSTextAlignmentRight; 
    label.textColor = [UIColor whiteColor]; 
    [cell setBackgroundColor:[UIColor clearColor]]; 

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    view.backgroundColor = [PublicObject colorWithHexString:@"cd4110"]; 
    label.text = [filterData objectAtIndex:indexPath.row]; 
    view addSubview:label]; 

現在我想在我看來,讓一個子視圖,其中該子視圖具有標籤= 1,並將其保存在另一個對象像這樣:

UILabel *tagLabel; 
tagLabel = //I want get one subview in view where tag = 1 

請指導我一下。

+0

首先,可以有很多子視圖與一個標籤。所以正確的問題是「如何通過標籤從uiview獲取子視圖」。 – nicael

回答

26

你可以得到你的子視圖的循環迭代

for (UIView *i in self.view.subviews){ 
     if([i isKindOfClass:[UILabel class]]){ 
      UILabel *newLbl = (UILabel *)i; 
      if(newLbl.tag == 1){ 
       /// Write your code 
      } 
     } 
} 
+0

我的朋友我想用標籤獲得UILabel!如果我的視圖中有很多標籤,我無法使用此...請指導我使用任何標籤的標籤 – user3797431

+0

將唯一標籤值設置爲所有視圖並使用標籤訪問該對象。 – Hiren

+4

最快的代碼不是,但它是: UILabel * tagLabel =(UILabel *)[view viewWithTag:1]; – saraman

4

您可以使用viewWithTag:方法。

+0

感謝我的朋友,但我不知道那個。請用代碼指導我! – user3797431

+4

精益閱讀文檔。它都在那裏。 – dasdom

70

例與UILabel

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

好運!

2

如果您在同一視圖

UILabel *tagLabel = (UILabel*)[view viewWithTag:1]; 

另外,如果你想的UILabel

UILabel *newTagLabel = [tagLabel copy]; 
//customize new label here... 
[view addSubView:newTagLabel]; 
23
的新實例

您可以使用其他人提到的代碼獲得子視圖,就像

UILabel *tagLabel = (UILabel*)[view viewWithTag:1]; 

但很重要的一點要記住,

  • 確保父視圖不具有相同的標記值作爲子視圖。否則,「viewWithTag:」方法將返回接收器視圖(您在其上調用viewWithTag:方法),而不是返回所需的實際子視圖。

因此,只要您需要使用「viewWithTag:」方法,就可以將父視圖和子視圖標記分開。

+5

請確保您的父母視圖沒有與您的父母視圖一樣的標籤!我正處於失去理智的邊緣。謝謝。你的評論拯救了我的生命。 – AhabLives

3

所有的雨燕3.0

let subLabel:UILabel = primaryView.viewWithTag(123) as! UILabel

相關問題