2011-11-23 44 views
0

從我的其他問題; Using UITableViewCell in a UITableView我用IB創建了一個自定義單元格。繼承人如何我的代碼是目前:UITableViewCell使用IB加載數據的自定義單元格

ViewRoutes(原始表)

.h 

@interface ViewRoutes : UIViewController { 

    IBOutlet UITableView *tblRoute; 
} 

@property(nonatomic, retain) UITableView *tblRoute; 

@end 

.M

#import "ViewRoutes.h" 
#import "ViewRoutesCell.h" 

@implementation ViewRoutes 
@synthesize tblRoute; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 


- (NSInteger) 
numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 1; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell * aCell = [tableView dequeueReusableCellWithIdentifier:@"ViewRoutesCell"]; 
    if (aCell == nil) 
    { 


     NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"ViewRoutesCell" owner:self options:nil]; 

     for (NSObject *anObj in arr) { 

      if([anObj isKindOfClass:[UITableViewCell class]]) { 

       aCell = (UITableViewCell *)anObj; 


      } 
      return aCell; 
     } 
    } 


} 

和的.xib只是上有一個UITableView。

的ViewRoutesCell(我想成爲自定義單元格是什麼)

.H

#import <UIKit/UIKit.h> 

@interface ViewRoutesCell : UITableViewCell { 

    IBOutlet UITableViewCell *routesCell; 
    NSMutableArray *arryRouteText; 
    NSMutableArray *arryRouteImage; 

    IBOutlet UILabel *lblRouteText; 
    IBOutlet UILabel *lblRouteImage; 

} 

@property (nonatomic, retain) NSMutableArray *arryRouteText; 
@property (nonatomic, retain) NSMutableArray *arryRouteImage; 
@property (nonatomic, retain) UILabel *lblRouteText; 
@property (nonatomic, retain) UILabel *lblRouteImage; 

@end 

我已經在自定義單元格的.m做的唯一的事情是合成的物品

然後我的自定義單元格的xib我有:

enter image description here

enter image description here

enter image description here

從這裏我得到一點點堅持,我不能工作了如何從我的ViewRoutes.m設定的兩個標籤屬性(它們將從XML最終會到來,但是現在只要一個可變陣列)

我正在做這個正確的方法嗎?

湯姆

編輯只是爲了讓你知道我加載圖像串的標籤就目前而言,將是一個圖像後

+0

它是什麼,你想做的事是什麼呢?您是否嘗試編輯自定義單元格的標籤屬性,或者您是否嘗試編輯ViewRoutes.m文件的屬性? – Warkst

+0

我試圖從ViewRoutes.m編輯自定義單元格的標籤屬性 – TMB87

回答

3

UITableViewCell * aCell = [tableView dequeueReusableCellWithIdentifier:@"ViewRoutesCell"]; 

你創建一個UITableViewCell對象的聲明。這不知道您的自定義標籤。你應該將其更改爲:

ViewRoutesCell * aCell = (ViewRoutesCell *)[tableView dequeueReusableCellWithIdentifier:@"ViewRoutesCell"]; 

然後,if子句中,你應該改變

aCell = (UITableViewCell *)anObj; 

aCell = (ViewRoutesCell *)anObj; 

這將使編譯器識別對象爲之一您的特定單元格,允許您訪問標籤屬性。

希望這會有所幫助!

+0

嘿,非常感謝!我們很親密。還有一個問題,我如何讓這些細胞將我設計的自定義細胞筆尖製作出來? http://screencast.com/t/TIw0WFbTxd例如是它是如何來的 – TMB87

+0

我不知道是什麼原因造成這個......試試這個:在isKindOfClass調用中,寫入ViewRoutesCell而不是UITableViewCell。如果這樣不能解決問題並且無法解決問題,請查看本教程:http://www.icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/。它有你需要的所有細節。祝你好運! – Warkst

0

如您有定義的UILabel屬性,必須有@synthesized in ViewRoutesCell.m file。

現在,它很容易訪問這些標籤的屬性。

在您的cellForRowAtIndexPath中,修改以下部分代碼。

for (NSObject *anObj in arr) { 
    if([anObj isKindOfClass:[ViewRoutesCell class]]) { 
     aCell = (UITableViewCell *)anObj; 
     aCell.lblRouteText.text = @"My Route Text"; 
     aCell.lblRouteImage.text = @"My Route Image"; 
    } 
    return aCell; 
} 
+0

這是我的想法,但它沒有公開屬性讓我訪問lblRouteText或lblRouteImage。我已經在我的ViewRoutes.m中加載了.h,並在我的ViewRoutesCell.m – TMB87

+0

屬性'lblRouteText'中找不到屬性'UITableViewCell'類型的對象中合成的屬性 – TMB87

+0

這是因爲您不應將anObj強制轉換爲UITableViewCell *,而是轉換爲ViewRoutesCell *。 – Warkst

0

沒有必要的for循環 通過正如你已經把return語句for循環下面的代碼

acell.lblRouteText.text = [arryRouteText objectAtIndex:indexPath.row]; 
acell.lblRouteImage.text = [arryRouteImage objectAtIndex:indexPath.row]; 

return acell; 

取代你的for循環,它總是使用第一個對象,並且休息的對象永遠不會有機會分配。

而且,您不能將圖像分配給標籤,因爲您必須使用UIImageView。

+0

謝謝你,如上所述,雖然它不讓我做aCell.lblRouteImage或aCell.lblRouteText,好像它們沒有被暴露,但我確定它們應該是 – TMB87

+0

屬性'lblRouteText'沒有在'UITableViewCell'類型的對象上找到' – TMB87

+0

看來你還沒有合成得當。 – HarshIT

0

你應該設置ViewRoutesCell類的IB細胞作爲文件的所有者,然後你可以將這些屬性鏈接到IB文件

+0

或 - (id)initWithCoder:(NSCoder *)coder {self_ [super initWithCoder:coder]; (self){__goodsImgView =(UIImageView *)[self subviewWithTag:1]; _eventImgView =(UIImageView *)[self subviewWithTag:2]; – TonnyTao

相關問題