在我的自定義單元格中有一個UILabel
和一個UIButton
。每當我點擊UIButton
時,UILabel
的高度會隨標籤的內容而增加。如何在自定義表格視圖單元格上獲得UILabel?
問題是,我怎樣才能得到UILabel
這是一個細胞的子視圖。每個單元格都包含一個標籤和一個按鈕,但僅增加了單擊此按鈕的單元格,其他單元格保持不變。
在此先感謝。
在我的自定義單元格中有一個UILabel
和一個UIButton
。每當我點擊UIButton
時,UILabel
的高度會隨標籤的內容而增加。如何在自定義表格視圖單元格上獲得UILabel?
問題是,我怎樣才能得到UILabel
這是一個細胞的子視圖。每個單元格都包含一個標籤和一個按鈕,但僅增加了單擊此按鈕的單元格,其他單元格保持不變。
在此先感謝。
您可以在細胞通過所有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)];
}
對於這一點,你必須需要爲每個組件分配TAG ..
嘗試綁定方法您按鈕可能爲你工作。
-(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
}
}
}
最簡單的方法是將tag
屬性分配給標籤。這樣在你的按鈕操作方法中,你可以找到相關的標籤。例如:
- (void) myButtonAction: (UIButton *) sender
{
UILabel *theLabel = (UILabel *) [sender.superview viewWithTag: MYLABELTAG];
// Do something with theLabel
}
這段代碼確實是因爲按鈕是在同一視圖發現標籤
我寫了一篇關於如何從tablecells這裏得到的標籤很短的例子:https://stackoverflow.com/a/9864169/407488
但我認爲你想要的是一次增加所有單元格中的所有標籤?然後只需使用reloadData
並在調用它之前更改成員變量(當觸摸按鈕時)。您在cellForRow:
代碼中閱讀該成員,並指定相應的高度。
你將不得不再給我們更多的東西 - 發佈一些代碼來說明你現在有什麼,並解釋你想要達到的目標。我直接提出的一個問題是「你爲什麼試圖去UILabel?」 - 您應該在控制標籤的單元格上有方法,因此您應該將消息發送到將控制標籤的單元格。 – 2012-03-26 09:21:28
customcell上有許多子視圖,但我只想按特定的標籤高度增加按鈕點擊(每當內容超過點擊更多按鈕標籤和單元格的高度增加。我成功與特定單元格高度,但在該單元格特定標籤的高度不增加) – Birju 2012-03-26 09:26:29
我的評論依然存在。你應該在被調用的單元上有一個方法來表示你想要標籤的高度增加,並且單元格會處理改變它。該單元'擁有'它上面的標籤,所以它應該負責改變高度。如果不添加一些代碼來顯示你的單元格,我不能提供比這更詳細的建議。 – 2012-03-26 09:55:00