2013-10-09 45 views
4

我需要設計一個UIView作爲單獨的xib文件的tableview單元格。 我也嘗試過創建一個單獨的xib並將其視圖匹配到tableview單元格類型。 但它失敗了,有任何編程指南來創建自定義,可重用的tableview單元格創建?設計一個UIView作爲單獨的xib文件的tableview單元格

創建自定義tableview單元格後,我們如何將它添加到表視圖?

+0

這應該是有幫助的:[ios步驟來創建與xib文件的自定義UITableViewCell](http:// stackoverflow。com/questions/4917027/ios-steps-to-create-custom-uitableviewcell -with-xib-file) – Amar

回答

8
  1. 你需要繼承UITableViewCell,那麼你已經添加了新的「查看」文件(參見下圖) enter image description here

  2. 刪除UIView文件中.xibobject library添加Table View Cell

3.設置爲你的自定義類

enter image description here

CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:identifier]; 
if (cell == nil) { 
    // Load the top-level objects from the custom cell XIB. 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
    // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 
    cell = [topLevelObjects objectAtIndex:0]; 
} 
+0

@TheDoctor我遵循用xib @ http://www.weheartswift.com/swifting-around創建customCell。在本教程中,他沒有實現'func ... heightForRowAtIndexPath'。但是如果我不使用這個函數,我的單元格就會重疊。我的代碼有什麼問題? – Emadpres

+0

@EmAdpres:單元格的默認高度是44,如果您的自定義單元格的高度不同,則需要在界面構建器中實現'heightForRowAtIndexPath'或爲tableview設置單元格高度。 –

+0

@TheDoctor我在界面構建器中爲tableview設置單元格高度,並且它仍然重疊。我想我沒有其他的選擇比執行'heightForRowAtIndexPath'因爲我的列表不是靜態的[根據這個答案](http://stackoverflow.com/questions/8615862/custom-cell-row-height-setting-in-storyboard -is-未響應)。對嗎?或者我仍然有機會在界面構建器中設置單元格高度? – Emadpres

0

cellForRowAtIndexPath委託方法,請執行下列操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"customCellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"customCellIdentifier"]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 


    UIView *view =[[UIView alloc]init]; 
    view.frame = cell.contentView.frame; 

    view.backgroundColor = [UIColor redColor];//To be sure that the custom view in the cell 
    [cell addSubview:view]; 

    return cell; 
} 
+0

這是否也加載自定義單元格? – Alix

1

您可以創建一個單獨的NIB來存儲你的表格單元格。在viewDidLoad中註冊您的NIB文件每種細胞類型:

#define kMyCellIdentifier @"kMyCellIdentifier" 

.... 

- (void)viewDidLoad 
{ 
    UINib *tableCellNib = [UINib nibWithNibName:@"MyCell" bundle:nil]; 
    [self.tableView tableCellNib forCellReuseIdentifier:kMyCellIdentifier]; 
} 

然後,當詢問您可以創建一個單元格。既然你已經註冊的筆尖的iOS將處理爲您創建的細胞,如果有尚未一個出隊:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kMyCellIdentifier]; 

    // Configure cell... 

    return cell; 
} 

您還可以創建原型單元故事板直接在IB,但FF你有一個通用應用程序,這是一個痛苦,因爲你需要維護一個iPad和同一個單元的iPhone版本。

+0

我編輯它,並以某種方式結束了2職位。我已刪除該副本。 – tarmes

1

你可以找到一個演示here並且在共享側customcell文件夾。希望能你會能夠找到所有的東西,並根據您的需要進行修復。

1
在委託方法cellforrowindexpath方法

添加如下: -

UIView *myView = [UIView alloc]init]; //or initwithframe 
myview.frame = cell.contentView.frame; 
如果要確保再設置研究背景顏色

myview.backgroundColor = [UIColor yellowColor]; //Or any other color. 
[cell addsubview :myview]; 

謝謝

。 如果您有任何疑問,請隨時聯繫。

0

首先,您必須創建一個文件,配置您的單元類類,然後從UITableViewCell類中接收。創建一個僅具有表格視圖單元格的XIB文件。然後將您的自定義單元格類文件導入到視圖或視圖控制器中,實施以下方法。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d",indexPath.row]; 
      YOUR_CUSTOM_CELL_CLASS * cell = (YOUR_CUSTOM_CELL_CLASS *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
      return [self createCustomCell:cell cellForRowAtIndexPath:indexPath]; 
} 


-(YOUR_CUSTOM_CELL_CLASS *)createCustomCell:(YOUR_CUSTOM_CELL_CLASS *)cell cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (cell == nil) 
    { 
     cell = (YOUR_CUSTOM_CELL_CLASS *)[[[NSBundle mainBundle] loadNibNamed:@"YOUR_CUSTOM_CELL_CLASS_XIB_FILE_NAME" owner:self options:nil] objectAtIndex:0]; 
    } 
    return cell; 
} 
相關問題