UITableView 单元格重叠

2024-01-10

我正在实现一个带有部分索引的 tableView。每当任何特定部分中的行超过一行时,我的 tableViewCell 就会重叠。

这是我的代码。

![- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return \[self.keys count\];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
//    return \[\[\[UILocalizedIndexedCollation currentCollation\] sectionTitles\] objectAtIndex:section\];
    return \[keys objectAtIndex:section\];
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
//    return \[\[UILocalizedIndexedCollation currentCollation\] sectionIndexTitles\];
    return keys;

}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    return \[\[UILocalizedIndexedCollation currentCollation\] sectionForSectionIndexTitleAtIndex:index\];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = \[tableView dequeueReusableCellWithIdentifier:nil\];
    if (cell == nil) {
        cell = \[\[UITableViewCell alloc\] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier\];

    }
    \[self.exhibitorTableView setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)\];

    UIView* bgview = \[\[UIView alloc\] initWithFrame:CGRectMake(0, 0, 1, 1)\];
    bgview.opaque = YES;
    bgview.backgroundColor = \[UIColor colorWithRed:244.0f/255 green:245.0f/255 blue:246.0f/255 alpha:1.0\];
    \[cell setBackgroundView:bgview\];
    cell.textLabel.font = \[UIFont fontWithName:@"Roboto-Light" size:17\];
    cell.detailTextLabel.font = \[UIFont fontWithName:@"Roboto-Light" size:13\];
    cell.textLabel.backgroundColor = \[UIColor clearColor\];
    cell.detailTextLabel.backgroundColor = \[UIColor clearColor\];
    cell.textLabel.textColor = \[UIColor colorWithRed:93.0f/255 green:94.0f/255 blue:94.0f/255 alpha:1.0\];

    UIImageView *defaultImage = \[\[UIImageView alloc\]init\];
    \[defaultImage setFrame:CGRectMake(5.0f, 5.0f, 40.0f, 40.0f)\];
    \[cell addSubview:defaultImage\];

    for (int i=0; i<\[self.exhibitorArray count\]; i++) {
        NSString * string = \[\[self.exhibitorArray objectAtIndex:i\]valueForKey:@"name"\];
        NSString *firstLetter = \[string substringToIndex:1\];
    if (\[\[keys objectAtIndex:indexPath.section\] isEqualToString:firstLetter\] ) {

    NSString *urlString = \[\[NSString alloc\]init\];
    urlString = @"http://";
    urlString = \[urlString stringByAppendingString:\[NSString stringWithFormat:@"%@",\[\[self.exhibitorArray objectAtIndex:i\]valueForKey:@"image"\]\]\];
    NSLog(@"%@",urlString);

    AsyncImageView *asyncImageView = \[\[AsyncImageView alloc\] initWithFrame:CGRectMake(0.0f, 0.0f, 40.0f, 40.0f)\];
    \[asyncImageView setBackgroundColor:\[UIColor clearColor\]\];
    NSString *tmp_string = \[\[NSString alloc\]init\];
    tmp_string = urlString;
    \[asyncImageView loadImageFromURL:\[NSURL URLWithString:tmp_string\]\];
    \[defaultImage addSubview:asyncImageView\];
    defaultImage.contentMode = UIViewContentModeScaleAspectFit;
    tmp_string = nil;
    asyncImageView = nil;
    defaultImage = nil;

    NSString *name_string = \[\[NSString alloc\]init\];
    name_string = \[\[self.exhibitorArray objectAtIndex:i\]valueForKey:@"name"\];
    NSLog(@"%@",name_string);
    UILabel *user_name = \[\[ UILabel alloc\]init \];
    \[user_name setFrame:(CGRectMake(58, 5, 270, 25))\];
    \[user_name setBackgroundColor: \[UIColor clearColor\]\];
    \[user_name setText:name_string\];
    \[user_name setFont:\[UIFont fontWithName:@"Roboto-Light" size:14\]\];
    \[user_name setTextAlignment:NSTextAlignmentLeft\];
    \[user_name setTextColor:\[UIColor colorWithRed:93.0f/255 green:94.0f/255 blue:94.0f/255 alpha:1.0\]\];
    \[cell addSubview:user_name\];
    user_name = nil;
        }
    }

    \[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator\];

    return cell;
}

它们不重叠。每次使用单元格时,您都会添加一个附加标签。

您只需向单元格添加一个标签,然后重复使用该标签,而不是每次添加一个新标签。

图像视图等也是如此......

最好的解决方案是使用自定义 UITableViewCell 子类......http://www.appcoda.com/customize-table-view-cells-for-uitableview/ http://www.appcoda.com/customize-table-view-cells-for-uitableview/

可能的解决方案

注意:我不喜欢这个,因为使用了 tag 属性,但它不需要子类化 UITableviewCell 就可以完成它......

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

    UIImageView *defaultImageView;
    UILabel *customLabel;

    if (cell == nil) {
        // create the cell and empty views ready to take the content.
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

        defaultImageView = //create the image view
        defaultImageView.tag = 3;
        [cell.contentView addSubview:defaultImageView];

        customLabel = //create custom label
        customLabel.tag = 4;
        [cell.contentView addSubview:customLabel];
    } else {
        // get the views that have already been created
        defaultImageView = [cell.contentView viewWithTag:3];
        customLabel = [cell.contentView viewWithTag:4];
    }

    // now populate the views...

    defaultImageView.image = someImage;
    customLabel.text = @"Hello, world";

    return cell;
}

这样,您只需在单元格中创建一个标签和一个图像视图,然后再重复使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITableView 单元格重叠 的相关文章

  • 与 parse-server 和 auth0 的自定义身份验证集成

    我想将 auth0 com 与开源解析服务器结合使用 我当前的方法是通过 iOS 的 Lock 库使用标准登录从 auth0 获取令牌 使用该令牌 我想在解析服务器上调用自定义身份验证方法 该方法检查令牌是否有效 如果有效则将登录用户 我的
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 加速度计适用于 iphone/ipad 模拟器吗?

    据我所知 当我在 XCode 中使用 iPad 模拟器时 我的应用程序应该会触发加速计事件 但事实并非如此 我用谷歌搜索了一下 似乎加速度计没有在模拟器中实现 这是正确的吗 如果是这样 为什么他们会有 硬件 gt 摇动手势 菜单选项 我的代
  • UIAlertView 每次调用都会弹出三次,而不是一次

    我在程序的两个不同部分中从 NSAlert 中得到了奇怪的行为 行为是 出现警报 然后自发地消失 警报重新出现 然后一直保留 直到用户解除 即正常行为 警报再次出现 此行为仅在第一次调用显示警报的方法时发生 第一次之后 它的行为就正常了 以
  • 日期时间到 NSDate

    如何转换字符串2010 11 19T20 00 00Z进入一个NSDate object 我尝试过使用 dateFormatter setDateFormat yyyy MM ddTHH mm ssZ 但看起来我的自定义格式样式错误 PS
  • 检测 iPhone 屏幕是否打开/关闭

    有没有办法检测 iPhone 的屏幕是打开还是关闭 例如 当按下手机的屏幕锁定按钮时 我一直在使用 void applicationWillResignActive UIApplication application 为此类事件做准备 在大
  • Grand Central Dispatch (GCD) 调度源标志

    我最近不再使用 to GCD 调度来源 https developer apple com documentation dispatch 1385630 dispatch source create监视文件更改 效果很好 API 也变得更加
  • 为什么 Apple 建议以编程方式创建模态导航控制器?

    以模态方式呈现导航控制器时 以编程方式创建和配置导航控制器对象通常更简单 虽然您也可以使用 Interface Builder 来执行此操作 但通常不建议这样做 事实上 因为我的导航控制器很简单 我宁愿在IB中自定义视图 虽然我不知道确切的
  • 广告标识符和标识符ForVendor返回“00000000-0000-0000-0000-000000000000”

    我已经实现了这个方法来获得advertisingIdentifier and identifierForVendor NSString advertisingIdentifier if NSClassFromString ASIdentif
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • UITableViewCell 内嵌套 UIStackView 内的 UILabel 有时会被截断

    我的一个表设置中有一个表视图单元格 其中包含以下视图层次结构 外部水平 stackview 固定到单元格内容视图的尾部 前部 底部和顶部边缘 右侧标签固定到其父 stackViewHackView 的尾部 前部 底部和顶部边缘 在我的控制器
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲
  • iOS 目标 c 中的 AES/CBC/PKCS5Padding 结果与 Android 不同

    我在 Android 应用程序中使用 AES CBC PKCS5Padding 代码就像 private static String TRANSFORMATION AES CBC PKCS5Padding private static St

随机推荐

  • 使用 prerender-spa-plugin 时如何加载 Vuetify?

    当我们在开发模式下运行 Vuetify 应用程序时 使用npm run dev 工作正常 然而 当我们使用prerender spa plugin Vuetify CSS 文件正确加载 但所有 JavaScript 组件都不起作用 即单击按
  • 如何在编辑模式下在 UITableView 中添加额外的单元格?

    您知道在表格进入编辑模式后如何让某些单元格出现在表格视图中吗 就像您编辑联系人时 通讯录 iPhone 应用程序所做的那样 也许我错了 但是在编辑联系人时 看起来像是使用了分组的 UITableView 我试过这个 self tableVi
  • Hg 存储库中的 git 子模块?

    我有一个非常旧的项目 其中直接包含另一个项目的源代码 而不是将其链接为库 回到糟糕的日子 当我将所有内容都保存在 CVS 中时 我将外部代码放在供应商分支上并定期导入 现在我的项目位于 git 中 将外部项目作为子模块包含进来会更有意义 但
  • 如何使用日期选择器在 Angular Material 5.0.0 中选择日期范围?

    我正在使用最新的Angular Material 5 0 0 rc0在我的 Angular 5 应用程序中 我正在尝试选择一个日期范围datepicker提供了 Angular 材料 但我找不到任何相关文档 我所能做的就是选择一个start
  • 最大化 div 的高度,周围元素的高度可变

    我有一个 div 我想在基于 100vh 的父级中最大化其大小 问题是我有两个pdiv 还可以根据窗口的宽度更改其高度 从而导致大小变化 现在 快速但肮脏的解决方案可能只是运行 jQuery 片段来检测父级的大小div and pdiv 并
  • 生成具有 2 个 OU 名称的 CSR

    我必须创建一个生成 CSR 的应用程序 在生成 CSR 时 我们需要填写一些详细信息 例如 CN OU 等 问题是我必须向其发送 CSR 的认证机构需要 2 个 OU 组织单位 名称 我用 google 搜索了很多 但找不到任何使用 ope
  • 如何在 Google Analytics 中跟踪“打开新标签”流量

    我有一个推荐网站 它使用一个网址来访问我的实施了谷歌分析的网站 当用户单击链接时 推荐网站会在同一窗口的新选项卡中打开我的网站 我想为每个推荐网站创建一个配置文件 以便每个配置文件都有自己的有关用户活动和交易转化的报告 我是谷歌分析的新手
  • R - 将 data.frame 转换为多维矩阵

    来自 data frame 的示例 x data frame c 1 1 2 2 3 3 c 1 2 1 2 1 2 c 1 1 1 2 2 2 c 12 14 22 24 34 28 colnames x c Store Dept Yea
  • 将 Google Analytics 添加到 Rails 4.2 应用程序

    我有一个使用 Heroku 部署的 Rails 4 2 应用程序 并且尝试向其中添加 Google Analytics 但是 Google Analytics 没有获取任何会话 有什么建议为什么以及如何解决这个问题吗 CODE app la
  • 在办公室 LAN 上设置 xampp 服务器

    我希望在小型办公室内使用 xampp 设置服务器 我当然会保护 xampp 但为了使我的 web 应用程序可供网络上的其他 4 台电脑使用 我是否只创建一个虚拟主机 有没有办法确保只能在局域网上访问Web应用程序 当前设置包括 4 台计算机
  • OpenGL 旋转

    我正在尝试在 OpenGL 中进行简单的旋转 但一定没有抓住重点 我并不是在寻找具体的修复方法 而是在寻找快速解释或更普遍地解释 OpenGL 旋转的链接 目前我有这样的代码 glPushMatrix glRotatef 90 0 0 0
  • 使用 Hadoop MapRed 排序

    Well 我想知道如何在reduce 任务之后更改简单WordCount 程序的排序顺序 我已经制作了另一个按值排序而不是按键排序的映射 但它仍然按升序排序 有没有一种简单的方法可以做到这一点 更改排序顺序 谢谢 韦洛佐 如果您使用的是旧版
  • Android Work Manager - Work Manager 是否能 100% 确保后台执行完成?

    根据我从文档中读到的内容https developer android com topic libraries architecture workmanager https developer android com topic libra
  • 如何限制pyqt中QLineEdit中的用户输入

    我有一个QLineEdit我想限制QLineEdit仅接受整数 它应该像输入掩码一样工作 但我不想用inputmask 因为如果用户点击QLineEdit光标将位于鼠标单击的位置 用户需要导航到 0 位置并输入他想要的内容 有没有什么替代方
  • 如何在 SQL Server 2012 中设置每周自动备份?

    请建议我如何在 SQL Server 2012 中设置自动数据库备份 我需要对 SQL Server 中的所有数据库 目前仅包含 3 个 进行每周自动备份 该备份在每周五 0100 点 凌晨 1 点 运行 这些备份文件 bak 应放置在 E
  • Swift NSScriptCommand 执行默认实现

    我在 Objective C 中使用了这段代码 implementation KDOrderInfo id performDefaultImplementation NSString theRequest self directParame
  • 使用 MailKit 和 Gmail OAuth 发送邮件

    我正在尝试创建一个应用程序 在客户购买时向他们发送电子邮件 我们有自己的 GMail 帐户 我将用它来发送电子邮件 我已经设置了我的应用程序并在 Google API 控制台中创建了凭据 我发现这个问题 https github com j
  • 如何调用API(Oauth 1.0)?

    我试图调用这个API Oauth1 0标准 https appcenter intuit com api v1 Connection Reconnect https appcenter intuit com api v1 Connectio
  • C/C++宏嵌套替换逻辑

    我正在尝试实现 C C 兼容的宏处理 我可以正确处理许多极端情况 包括此处讨论的情况 了解宏间接扩展自身时 C 预处理器的行为 https stackoverflow com questions 66593868 understanding
  • UITableView 单元格重叠

    我正在实现一个带有部分索引的 tableView 每当任何特定部分中的行超过一行时 我的 tableViewCell 就会重叠 这是我的代码 NSInteger numberOfSectionsInTableView UITableView