2013-09-27 97 views
0

我讀蘋果文檔一個UITableViewCell子類上設置的UITableViewCell的定製子類 - Docs設置在代碼

在這個例子中,我需要設置,其中沒有一個NIB /故事板文件中的自定義單元格。蘋果文檔提供了一個使用預定義樣式和配置但不創建完全自定義佈局的示例。

  1. 應該如何調用細胞.. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我期待有一個完全自定義的佈局,所以這是正確的?由於該單元格被稱爲initWithStyle ...?

MESLeftMenuCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

if(cell == nil) { 
    cell = [[MESLeftMenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
} 
  1. 在自定義單元格子如何/我應該在哪裏執行的內容查看內意見的設置? 爲init調用哪個方法,它是否像上面那樣是initWithStyle?如果是這樣,我可以簡單地在那裏創建一個細胞出口嗎?

然後在cellForRowAtIndexPath可以訪問的網點,即cell.MainLabel.text ...?

回答

0

從iOS 6開始,您不再需要檢查出列單元格是否爲零。

你會做什麼如下:

在包含表視圖控制器的viewDidLoad方法查看您可以說

[self.tableView registerClass:[MyCellClass class] forCellReuseIdentifier:MyCellIdentifier]; 

這將導致你的dequeueReusablecellWithIdentifier調用永遠不會返回零。實質上,在後臺調用initWithStyle。所以你可以在重寫該函數時設置你的東西。

1

這就是我已經被證明在他們的自定義類中設置我的集合視圖單元格。我知道你使用的是桌面視圖,但是這讓我想了一會兒,所以決定在這裏添加。希望它可以幫助你。

- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
    [self commonInit]; 
} 
return self; 
} 

- (id)initWithCoder:(NSCoder *)encoder 
{ 
    self = [super initWithCoder:encoder]; 
    if (self) { 
     [self commonInit]; 
    } 
    return self; 
} 

- (void)commonInit 
{ 
    // set up your instance 
} 

要訪問該單元格的插座,我只需將插口添加到自定義類的頭文件中即可輕鬆訪問它們。