静态单元格内的动态 UITableView

2023-12-14

我读过一些关于静态和动态单元不兼容的线程,但我想知道是否有一些适合我的情况的解决方法。

我有一个静态表(由UITableViewController)。我在其中一个单元格内放置了一个动态表格。委托和数据源是UITableViewController对于这两个表,只要内部动态表的行数小于静态表的行数,它就可以很好地工作。当动态表的单元格多于静态表的单元格时,我得到一个index i beyond bounds例外。

我假设单元格总数以某种方式静态定义并由两个表共享,但无法真正理解到底发生了什么。有人遇到过类似的问题并找到了解决方法吗?

EDIT

这是我的numberOfRowsInSection方法。在我的委托/数据源的每个方法中,我都会检查调用表是动态表(表选项)还是静态表(在这种情况下,我调用父级的方法)。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == _tableOptions) {
        // I return here the number of rows for the dynamic inner table
    } else {
        return [super tableView:tableView numberOfRowsInSection:section];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == _tableOptions) {
        static NSString *simpleTableIdentifier = @"cellOptions";

        CellOptions *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        // Doing some stuff with my cell... 

        return cell;

    } else {
        return [super tableView:tableView cellForRowAtIndexPath:indexPath];
    }
}

这不是兼容性问题。如果您选择为静态 UITableView 实现编程控制功能,那么您必须确保不会与它们在故事板中的定义方式发生冲突。

例如,如果您为具有静态单元格的 UITableView 实现此函数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     return 5;
}

但是您只为情节提要中的给定视图和控制器添加了 3 个静态单元格,那么 Xcode 无法简单地从无到有再创建 2 个静态单元格。我认为最接近解决方法的方法是为带有动态单元格的表格添加另一个 UITableViewController 。您可以在当前使用的控制器中实例化新控制器,而无需在屏幕上显示其视图。然后,您可以将具有动态单元格的 UITableView 指定为新的 UITableViewController 的 tableView 属性。同样,将 UITableView 的 delegate 和 datasource 属性指定为新控制器。

EDIT:看到代码后,我确实知道一种可能的解决方法。您可以利用部分的数量来欺骗 UITableViewController 执行您想要的操作。

您可以使用下面的代码将任意数量的单元格添加到动态视图,因为您要将单元格添加到动态表的第二部分,但同时将静态表的第二部分中的单元格数量设置为 0。那是你吗MUST将最大单元格数添加到情节提要中静态表的第二部分。这些将是永远不会显示的虚拟单元格。

在下图中,您可以看到我将静态表的第二部分设置为 10 个单元格,在代码中我最多可以返回 10 个单元格dynamic表格视图。

enter image description here

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (tableView == dynamic)
    {
        return 2;
    }
    else
    {
        return 1;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == dynamic)
    {
        if (section == 1)
        {
            return 10;
        }
    }
    else
    {
        if (section == 0)
        {
            return [super tableView:tableView numberOfRowsInSection:section];
        }
    }
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == dynamic) {
        static NSString *simpleTableIdentifier = @"sample";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }

        [cell.textLabel setText:[NSString stringWithFormat:@"cell %d",indexPath.row]];

        // Doing some stuff with my cell...

        return cell;
    }
    else
    {
        return [super tableView:tableView cellForRowAtIndexPath:indexPath];
    }
}

您可以通过实现此函数来删除节标题来清理它:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 0;
}

删除各部分的标题后,您将得到您想要完成的任务。细胞内有10个dynamic静态表的第三个单元格内的表。

enter image description here

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

静态单元格内的动态 UITableView 的相关文章

  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • UITextFieldDelegate 与 UITextField 控件事件

    如果我想处理 UITextField 的更改 例如用户在其中键入 看起来这可以通过将委托分配给该文本字段 然后让委托实现 shouldChangeCharactersInRange 来完成 或者通过将目标添加到文本字段并处理 UIContr
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • iOS 8 中的 UISplitViewController 状态恢复

    在 iOS 8 上 UISplitViewController 似乎可以保存和恢复其子视图的状态 例如 主视图是否隐藏 这是不可取的 因为我的应用程序应该始终以横向方式显示主视图 并始终以纵向方式隐藏它 如果用户以横向模式关闭应用程序 保存
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we

随机推荐

  • 使用 angularJS 时未捕获的错误:[$injector:modulerr]

    我在我的应用程序中使用 angularJS 但是当我添加路由配置部分时 我收到此错误 Uncaught Error injector modulerr http errors angularjs org 1 2 9 injector mod
  • 如何限制用户使用datetimepicker输入数据并禁用手动用户输入?

    我想限制用户只能使用日期时间选择器输入数据 下面是我正在使用的代码 div class form group div
  • 查看函数列表时出现呼叫提示/文档字符串?

    我最近刚刚转用 Komodo 进行 Python 编程 到目前为止我很喜欢它 我喜欢输入函数名称 然后输入开括号 它会打开调用提示 文档字符串 我也喜欢输入模块名称 然后输入 它会打开可用函数的列表 我的问题是 当我列出函数列表时 是否可以
  • 使用批处理文件复制目录路径中带有通配符的文件?

    我想要一个批处理文件将文件从每月更改的文件夹复制到另一个文件夹 但 Windows 命令提示符似乎不喜欢通配符 Example 我想复制文件夹media1并包含此目录中的文件 K Eng NAVDB Navigation Databases
  • 使用 Git 进行代码升级

    我试图弄清楚如何将 git 用于多个环境 开发 gt 测试 gt 产品 并进行代码升级 我读了一些有关分支的内容 但不太明白这如何解决我的问题 因为我必须有能力同时且彼此独立地运行所有环境 将非常感谢某种操作方法 这种三层工作流程似乎是很常
  • join 命令遗漏了一行数字

    我有两个文件 我想取出第三列中具有共同数据的行 但它遗漏了一行应该匹配的行 File1 b b b 4 5 3 c c c File2 1 2 3 4 a b c d e f g h i j k l l m n o 输出是 c c c a
  • Silverlight 图表 - 饼图显示图表上的依赖值

    我想在饼图本身上显示相关值 不在图例区域中 我正在使用 Silverlight 4 Silverlight 4 Toolkit 2010 年 4 月 这应该是一个很常见的请求 但我还没有找到解决方案 我该怎么做
  • Angular 4 中的 HashLocationStrategy 和查询参数

    我正在将现有的 Angular 4 应用程序从 PathLocationStrategy 迁移到HashLocationStrategy并且需要保持入口点 url 正常工作 它看起来像www test com param1 123 问题是
  • 我可以只用 CSS 创建这个形状吗?

    我正在为具有特定形状的网页构建一个英雄部分 目前我只是使用图像作为实际部分背景的叠加层 但我希望减少我发出的请求数量 并且会想知道是否可以使用 CSS 完成以下形状 所以黑色部分是实际图像所在的位置 而白色部分是我尝试使用 CSS 构建的部
  • C# 用阴影给图像着色

    我目前正在使用 C 创建一款游戏 并尝试为玩家创建服装 我想做布料设计并让玩家选择颜色 我从 TibiaME tibiame com 的游戏文件中拍摄了照片 它几乎满足了我的要求 我怎样才能用颜色填写这个表格 当我尝试替换某种颜色时 它不起
  • 无法将字符串分配给 Swift 函数内的数组元素

    下面代码中的两个赋值行都给出了这个错误 value T5 与 String 不同 func PrintShoppingList myList Array
  • SQL Server,检查 varchar 是否包含全零

    我需要编写一个函数来检查 varchar 变量值是否全为零 由于变量是 varchar 而不是 int 我有点迷失了 你会怎么办 多谢 您可以使用双重否定LIKE test variable NOT LIKE 0 这表示变量isn t由一定
  • 在同一个 goroutine 中创建的 goroutine 总是按顺序执行吗?

    package main func main c make chan int for i 0 i lt 100 i i i go func c lt i for b lt c println b if b 100 break 上面
  • 如何在 UIScrollView 中加载 UIViewController

    这是我的设置 我有一个UIScrollView在我的主视图控制器之上 我在其中加载多个视图控制器 我还有一个 添加 按钮 它将使用 Push segue 呈现一个新的视图控制器 我希望这个视图控制器也只加载在滚动视图的顶部 而不是整个屏幕
  • 组合器在哪里组合映射器输出 - 在映射阶段或映射减少作业中的减少阶段?

    我的印象是组合器就像作用于本地映射任务的减速器一样 即它聚合单个映射任务的结果以减少输出传输的网络带宽 并且从阅读中Hadoop The definitive guide 3rd edition 我的理解似乎是正确的 摘自第 2 章 第 3
  • Android:将应用程序添加到“将图片设置为”列表

    我正在尝试将我的应用程序添加到 设置为 列表 当我选择图像时 该列表会显示在图库中 如果用户在图库中打开图像 则会有一个按钮set as 当用户点击它时 他会得到一个列表 换句话说 如果他想在我的应用程序中使用该图像 我努力了
  • 重定向+403错误

    我正在寻找一种方法来拥有类似的东西 return HttpResponseForbiddenRedirect reverse view name 重定向到视图 及其名称 但仍然抛出 403 错误的 HttpResponse 我尝试做类似的事
  • 如何构造一个 URL 以使用 jquery lightbox 插件 colorbox 打开页面?

    我正在使用 jquery lightbox 插件 colorbox http colorpowered com colorbox 我希望能够构建一个像 www example com about me html 这样的 URL 它将用户发送
  • 配置php ini文件上传文件

    我有一个用于上传文件的页面 在 htaccess文件我有这个 php value upload max filesize 40M php value post max size 40M 我有一个 img 大小为 1 6 MB 当我尝试上传此
  • 静态单元格内的动态 UITableView

    我读过一些关于静态和动态单元不兼容的线程 但我想知道是否有一些适合我的情况的解决方法 我有一个静态表 由UITableViewController 我在其中一个单元格内放置了一个动态表格 委托和数据源是UITableViewControll