ios - 如何检索尚未出现在屏幕上的静态 UITableViewCell

标签 ios objective-c uitableview

我有一个 UITableView用一堆静态的UITableViewCell s 代表菜单项。单元格都在 Storyboard 中定义

UITableView出现,我想为每个单元格设置详细文本,并为该菜单项设置一个值。

我已标记所有表格单元格并在 viewDidLoad 中,我用 viewWithTag: 检索所有单元格.但是,我只能检索屏幕上已经可见的单元格。

我知道静态表格单元格不会从 NIB 加载,直到它们出现在屏幕上。

有没有办法强制 UITableView在开始时加载所有单元格?

我正在考虑使用 UITableViewDelegate:tableView:cellWillAppear在屏幕外单元格出现时对其进行初始化,但我宁愿没有单独的方式来初始化单元格。

更新

该表用作选择要查看的列表的菜单。我正在尝试显示列表项的计数。在每个菜单项(表格单元格)上,我将列表 ID 设置为 NIB 中的标记,以及列表的名称。

通过标签 检索单元格

- (void) setDetailLabelForList: (NSInteger)listId withString: (NSString*) string
{

    NSInteger tag = listId;
    UITableViewCell* cell = [self.tableView viewWithTag:tag];
    cell.detailTextLabel.text = string;
}

另一种方法是通过索引路径检索静态单元格。这需要 listID 和索引路径之间的映射。但是,结果是相同的,因为检索尚未出现在屏幕上的静态单元格会返回 nil。

按索引路径检索
- (void) setDetailLabelForList: (NSInteger)listId withString: (NSString*) string
{
    NSString* path = [vocabListToUIMap objectForKey:[NSNumber numberWithInteger:listId]];
    if (path)
    {
        NSArray* pathElements = [path componentsSeparatedByString:@"."];
        NSInteger sectionNum = [[pathElements objectAtIndex:0] intValue];
        NSInteger itemNum = [[pathElements objectAtIndex:1] intValue];

        NSIndexPath* path = [NSIndexPath indexPathForRow:itemNum inSection:sectionNum];

        UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:path];
        cell.detailTextLabel.text = string;
   }
}

编辑:添加代码。

最佳答案

为什么要依靠标签来确定哪些单元格是哪个单元格?使用 row NSIndexPath 的属性(property)执行tableView:cellForRowAtIndexPath:中的逻辑时.如果要在编译时指定每种类型,可以创建 UITableViewCell每种菜单类型的子类,但我不建议这样做。

如果您可以发布一些表格 View 代码,我们可以查看一些无需viewWithTag: 的方式重新实现它。 .

关于ios - 如何检索尚未出现在屏幕上的静态 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005752/

相关文章:

ios - 自定义编写的分组 UITableViews 真的是在 iOS 上实现标准表单的方式吗?

ios - 有什么可行的方法可以使用 UIWebView/WKWebView 在 UITableViewCell 中加载动态内容?

ios - 在容器 View 内的选项卡栏 Controller 内委派来自 View Controller 的信息

ios方法变成僵尸

ios - 不能在具有显式参数的闭包内使用匿名闭包

iphone - 如何让 iphone 像桌面浏览器一样浏览网页?

objective-c - Xcode:为什么我不能在一个项目中有重复的 ivars?出现重复符号错误

ios - 获取应用内购买自动续订订阅结束日期的最佳策略

iphone - SQLite3 COUNT 不正确

ios - 未调用 UIPageViewController 的数据源方法