2009-12-28 69 views
0

我有在具有一個UILabel作爲一個子視圖,當我設置標籤的文本表視圖細胞時,它決不會在細胞中。我有點在iPhone開發一個小白,我不知道我做錯了什麼......UITableViewCell中的UILabel子視圖不顯示。 (iPhone開發)

我創造,在我的表視圖的委託的cellForRowAtIndexPath返回以下細胞:

 

cell = [[[ActivityCell alloc] initWithFrame: 
    CGRectZero reuseIdentifier:ColumnedCell] autorelease]; 

CGRect frame = CGRectMake(180.0, 11.0, 130.0, 22); 

UILabel *valueField = [[UILabel alloc] initWithFrame:frame]; 
[valueField setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
valueField.tag = 111; 
valueField.textAlignment = UITextAlignmentRight; 
valueField.textColor = [UIColor colorFromHex:@"326799"]; 
valueField.highlightedTextColor = [UIColor whiteColor]; 
valueField.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 
valueField.adjustsFontSizeToFitWidth = YES; 

[cell.contentView addSubview:valueField]; 
[valueField release]; 

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

 

我再想以後通過這樣設置的UILabel(子視圖)(我目前在viewDidAppear此代碼):

 

ActivityCell *cell = (ActivityCell*)[formDetailsTableView cellForRowAtIndexPath: 
    [NSIndexPath indexPathForRow:0 inSection:1]]; 

UITextField *valueField = (UITextField *)[cell viewWithTag:111]; 
valueField.text = @"foo"; 
 

但這個詞「富」一直沒有出現在U ILabel。我相信,它顯示了當我< = 2.2 SDK編譯,但我想要得到這個與3.0+

爲什麼文本顯示不出來任何想法的工作?

跟進:

請看看這個問題,作爲跟進這個:UITableViewCell's textLabel is overlapping a subview label, how can I fix it? (iPhone Dev)

回答

0

它看起來像你有一個小錯誤:

變化

UITextField *valueField = (UITextField *)[cell viewWithTag:111]; 

UITextField *valueField = (UITextField *)[cell.contentView viewWithTag:111]; 
+0

沒有運氣好的話,valueField.text看起來像它的設置(通過NSLog的),但它不會在視圖中顯示出來。 – mmattax 2009-12-28 20:04:37

0

我的猜測是,回來的細胞是零,因此不更新你的文字。我就開始購買,確保你從該行得到一個細胞回:

ActivityCell *cell = (ActivityCell*)[formDetailsTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]]; 
+0

單元格不爲空... – mmattax 2009-12-28 21:25:54

2

好第一關,你要創建一個UILabel,標記它作爲111,然後將其添加爲一個子視圖到該單元的內容查看。稍後,您正在嘗試檢索該UILabel,但將其轉換爲UITextField。從根本上說,你在這裏做的事情是錯誤的。

這裏就是我建議這樣做:

  1. 看看蘋果的指南using Interface Builder to create cells。這將導致更少的代碼,並且您將能夠輕鬆查看正在發生的事情,並且不必以編程方式添加Label/TextField。
  2. ,而不是試圖直接訪問細胞viewDidAppear和改變他們的子視圖,你應該做的所有的顯示邏輯的cellForRowAtIndexPath內。在另一種方法(例如,一個當用戶觸摸一個按鈕時調用),即可修改某些數據結構,然後發送的tableView的reloadData消息。那時,cellForRowAtIndexPath被再次調用,並且數據結構中設置的值決定了單元格的創建方式。
-1
cell = [[[ActivityCell alloc] initWithFrame: 
    CGRectZero reuseIdentifier:ColumnedCell] autorelease]; 


你的細胞具有CGRectZero的框架

+0

表格單元格初始化的框架通常是不相關的,因爲UITableView可以管理單元格的許多其他方面。這可能是爲什麼'UITableViewCell' -'-initWithStyle:reuseIdentifier:'-now的指定初始值設定項完全消除了「frame」參數。 – 2009-12-28 22:23:55

相關問題