這是我最終想要做的。我想在UITableView中顯示一個菜單項,但動態顯示,以便顯示的項目類型決定了加載的自定義單元格視圖。例如,假設菜單項類型是'switch',那麼它將加載一個名爲'switch.xib'的nib,並且狀態將根據該特定菜單項的值而打開/關閉。可能有5個項目是「切換」類型,但是不同的值。所以我想爲每一個使用相同的xib,但是有5個實例。如何使用動態重用標識符設置和取消定製UITableViewCell?
所以,很長的路要走。當我從nib加載單元格視圖時,我認爲它需要唯一的重新使用標識符來表示出現在屏幕上的滾動時間,對嗎? (對於每個實例,即每個菜單項都是唯一的)。在Interface Builder中的UITableViewCell中,我看到了可以設置重用標識符屬性的位置,但是我希望在運行時爲交換機的每個實例設置它。例如,菜單項#1是開關,#2是文本字段,#3是開關等。因此#1和#3都需要唯一的小區ID來出隊。
這裏是我的cellForRowAtIndexPath是什麼樣子:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Cells are unique; dequeue individual cells not generic cell formats
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d", indexPath.row];
ITMenuItem *menuItem = [menu.menuItems objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// Load cell view from nib
NSString *cellNib = [NSString stringWithFormat:@"MenuCell_%@", menuItem.type];
[[NSBundle mainBundle] loadNibNamed:cellNib owner:self options:nil];
cell = myCell;
self.myCell = nil;
}
// Display menu item contents in cell
UILabel *cellLabel = (UILabel *) [cell viewWithTag:1];
[cellLabel setText:menuItem.name];
if ([menuItem.type isEqualToString:@"switch"]) {
UISwitch *cellSwitch = (UISwitch *) [cell viewWithTag:2];
[cellSwitch setOn:[menuItem.value isEqualToString:@"YES"]];
}
else if ([menuItem.type isEqualToString:@"text"]) {
UITextField *textField = (UITextField *) [cell viewWithTag:2];
[textField setText:menuItem.value];
}
return cell;
}
什麼是你的問題?你有什麼問題?什麼錯誤信息? –
對不起,說清楚可能有點難。問題是,我如何在分配單元時爲單元添加重用標識符,以便出列工作? –