2011-11-21 25 views
0

在我的應用程序中,我有一個12種類型的自定義單元格的表格視圖。 我在故事板中設計了每一個。 一般來說,一切正常 - 感謝您的教程:) 我的問題是,我有單獨的樣式每個單元格中的額外數據 - 因此我不希望它們被重用。 我怎麼能生成一個故事板個人自定義單元格提供它在 -故事板和海關單元我不想被重用

tableView:cellForRowAtIndexPath:indexPath?

有什麼建議? 感謝 多米尼克

補充:

newCell = [tableView dequeueReusableCellWithIdentifier:cellType]; 
    cell = newCell; 
    [cell styleWithElement:element andResubItem:resubItem]; 

我的問題是,我需要另一種方式來創建一個從故事板自定義風格的單元格上方比quouted - 我沒有XIB和上面的方法是隻有我知道要創建我的細胞。 是否可以通過上述方式創建celltype並複製單元格?有沒有辦法複製一個單元對象?

回答

0

您可以每次生成一個隨機單元ID,以便它不會被重用。

但是,這對於滾動性能和內存消耗來說並不是很好,所以考慮實際上重用單元(即想出一種方法來替換它們中的數據)。

編輯:

UITableViewCell* myCell = [UITableViewCell alloc] initWithStyle:YOUR_CELL_STYLE reuseIdentifier:YOUR_RANDOM_ID]; 
for (UIView *view in newCell.subviews) { 
    [view removeFromSuperview]; 
    [myCell addSubview: view]; 
} 

您可能還需要調整了myCell的框架是一樣的:

,你可以永遠只是意見從一個到另一個,事情沿着這些路線複製newCell,如果newCell是任何事件的動作目標(例如,單擊單元格內的控制元素觸發單元類中定義的某個動作),則還需要將這些動作重新分配給myCell。

EDIT2:

要移動的動作,你可以做這樣的事情:

NSSet* targets = [control allTargets]; 
for(id target in targets) { 

    NSArray* actions = [control actionsForTarget:target forControlEvent:UIControlEventTouchUpInside]; 
    for(NSString* selectorName in actions) { 
    [newControl addTarget:target action:NSSelectorFromString(selName) forControlEvents:UIControlEventTouchUpInside]; 
    } 
} 

替代爲目標的新的細胞 - 並確保它實現了所有必要的選擇(或者你可以把一個新選擇器)。上面的代碼將替換UIControlEventTouchUpInside的目標 - 您可以使用所需的代碼(或使用allControlEvents枚舉控件所使用的)。

+0

謝謝你的回答。但是因爲我使用故事板,所以我必須應用故事板中使用的單元格標識符 - 或者可以根據故事板單元創建一個新的單元,而不使用dequeueReusableCellWithIdentifier? –

+0

發佈您的cellForRowAtIndexPath代碼? – SVD

+0

查看修改後的答案。順便說一句,你可能想在編輯你的問題後添加評論 - 否則回覆你的人將不會收到通知。 – SVD