2012-03-26 89 views
0

在我的自定義單元格中有一個UILabel和一個UIButton。每當我點擊UIButton時,UILabel的高度會隨標籤的內容而增加。如何在自定義表格視圖單元格上獲得UILabel?

問題是,我怎樣才能得到UILabel這是一個細胞的子視圖。每個單元格都包含一個標籤和一個按鈕,但僅增加了單擊此按鈕的單元格,其他單元格保持不變。

在此先感謝。

+0

你將不得不再給我們更多的東西 - 發佈一些代碼來說明你現在有什麼,並解釋你想要達到的目標。我直接提出的一個問題是「你爲什麼試圖去UILabel?」 - 您應該在控制標籤的單元格上有方法,因此您應該將消息發送到將控制標籤的單元格。 – 2012-03-26 09:21:28

+0

customcell上有許多子視圖,但我只想按特定的標籤高度增加按鈕點擊(每當內容超過點擊更多按鈕標籤和單元格的高度增加。我成功與特定單元格高度,但在該單元格特定標籤的高度不增加) – Birju 2012-03-26 09:26:29

+0

我的評論依然存在。你應該在被調用的單元上有一個方法來表示你想要標籤的高度增加,並且單元格會處理改變它。該單元'擁有'它上面的標籤,所以它應該負責改變高度。如果不添加一些代碼來顯示你的單元格,我不能提供比這更詳細的建議。 – 2012-03-26 09:55:00

回答

0

您可以在細胞通過所有subview S和看看哪一個是UILabel

for(UIView *v in [cell subviews]) 
{ 
    if([v isKindOfClass:[UILabel class]]) 
     //you can put more checks to see if height is to be increased/decreased 
     [v setFrame:CGRectMake(origin.x,origin.y,width,height)]; 
} 
0

對於這一點,你必須需要爲每個組件分配TAG ..

0

嘗試綁定方法您按鈕可能爲你工作。

-(void)buttonClick:(id)sender { 


UITableViewCell *cell=(UITableViewCell*)[sender superview]; 
NSArray *subviews=[cell subviews]; 
for (int i=0; i<[subviews count]; i++) { 
    id object=[subviews objectAtIndex:i]; 
    if([object isKindOfClass:[UILabel class]]){ 
     //do stuff here 
    } 
} 

} 
0

最簡單的方法是將tag屬性分配給標籤。這樣在你的按鈕操作方法中,你可以找到相關的標籤。例如:

- (void) myButtonAction: (UIButton *) sender 
{ 
    UILabel *theLabel = (UILabel *) [sender.superview viewWithTag: MYLABELTAG]; 
    // Do something with theLabel 
} 

這段代碼確實是因爲按鈕是在同一視圖發現標籤

0

我寫了一篇關於如何從tablecells這裏得到的標籤很短的例子:https://stackoverflow.com/a/9864169/407488

但我認爲你想要的是一次增加所有單元格中的所有標籤?然後只需使用reloadData並在調用它之前更改成員變量(當觸摸按鈕時)。您在cellForRow:代碼中閱讀該成員,並指定相應的高度。

相關問題