gpt4 book ai didi

ios - 如何使用动态重用标识符设置和出列自定义 UITableViewCell?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:59 25 4
gpt4 key购买 nike

这就是我最终要尝试做的事情。我想在 UITableView 中显示项目菜单,但是是动态的,以便显示的项目类型决定加载的自定义单元格 View 。例如,假设菜单项类型是“switch”,那么它将加载一个名为“switch.xib”的 nib,并且状态将根据该特定菜单项的值打开/关闭。可能有 5 个项目是“开关”类型,但值不同。所以我想为每个实例使用相同的 xib,但有 5 个实例。

所以,这个问题还有很长的路要走。当我从 Nib 加载单元格 View 时,我认为它需要唯一的重用标识符才能在屏幕上滚动回时出队,对吗? (每个实例都是唯一的,即每个菜单项。)在 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;
}

最佳答案

您可以在 nib 文件中设置重用标识符。因此,对于 switch.xib,您将使用“switch”作为重用标识符。然后就改变

NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d", indexPath.row];

NSString *CellIdentifier = menuItem.type;

假设 menuItem.type 是 'switch'

关于ios - 如何使用动态重用标识符设置和出列自定义 UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com