iOS - 循环单元格并检索数据

2024-01-21

抱歉,我对 iOS 开发还很陌生。

我有一个UITableView从单个 XiB 笔尖拉出的单元进行设置。我在笔尖中创建了一个开/关开关,并且我试图保存开关的状态viewWillDisappear我拥有的细胞数量。 (准确地说是 6 个单元)。

如何循环遍历所有单元格并保存此信息?

我在 UIViewController 中尝试了此操作来获取一个单元格的信息:

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    UITableView *tv = (UITableView *)self.view;
    UITableViewCell *tvc = [tv cellForRowAtIndexPath:0];

}

它给我错误“程序收到信号:”EXC_BAD_INSTRUCTION”。

我怎样才能做到这一点?


您必须通过有效的NSIndexPath to cellForRowAtIndexPath:。你使用了0,这意味着没有indexPath。

你应该使用这样的东西:

UITableViewCell *tvc = [tv cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

BUT。不要这样做。不要在 UITableViewCell 中保存状态。
当开关更改其状态时更新您的数据源。

如果您已经实现了 UITableViewDataSource 方法,那么您的 tableView 重用单元格的原因就正确了。这意味着当细胞被重复使用时,细胞的状态将消失。

您的方法可能适用于 6 个单元。但 9 个电池就会失败。
如果您将第一个单元格滚动到屏幕之外,它甚至可能会失败。


我写了一个快速演示(如果你不使用 ARC addrelease在必要的地方)向您展示应该如何做:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.dataSource = [NSMutableArray arrayWithCapacity:6];
    for (NSInteger i = 0; i < 6; i++) {
        [self.dataSource addObject:[NSNumber numberWithBool:YES]];
    }
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UISwitch *aSwitch = [[UISwitch alloc] init];
        [aSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
        cell.accessoryView = aSwitch;
    }
    UISwitch *aSwitch = (UISwitch *)cell.accessoryView;
    aSwitch.on = [[self.dataSource objectAtIndex:indexPath.row] boolValue];
    /* configure cell */
    return cell;
}

- (IBAction)switchChanged:(UISwitch *)sender 
{
//    UITableViewCell *cell = (UITableViewCell *)[sender superview];
//    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    CGPoint senderOriginInTableView = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:senderOriginInTableView];
    [self.dataSource replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithBool:sender.on]];
}

如您所见,不在单元格中存储状态并不是很复杂:-)

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

iOS - 循环单元格并检索数据 的相关文章

  • font-family 未应用于移动设备

    我的 font family 属性有问题css 我有一个标题 我想使用特定字体设置样式 我在用 fontface 在我的桌面上它工作正常 但在iPhone and iPad我得到了一些标准字体 我认为可能是次 但我不确定 我做了一些研究并尝
  • 为什么 Obj-C 属性默认所有权“分配”而不是“强”

    我正在向旧项目添加 Swift 类 一切进展顺利 直到我尝试向 Swift 类添加属性 生成的标头无法编译 我认为问题是 在生成的代码中 Swift 省略了strong所有权并仅将其声明为nonatomic 这通常应该足够了 因为 prop
  • 如何在导航栏中添加右键?

    我有一个问题要在导航栏中添加右键 我有两个视图 视图 A 和视图 B 我添加了一个导航栏来查看A 之后我使用了self navigationController pushViewController显示视图 B 视图B的导航栏左侧自动显示一
  • 动态增加UITableViewCell中UILabel的高度?

    我有一个 UITableView 其中显示一个自定义单元格 我的单元格有两个标签和一个视图 如下图所示 我已经像这样给出了左视图的约束 项目标签限制 中心视图约束 右视图的约束 I am using a bean class to stor
  • 是否可以在无需升级 iOS 企业应用程序的情况下更新配置文件?

    新生成的配置文件似乎不再与同一应用程序的旧版本兼容 新应用程序确实适用于新配置文件 但是我们不想升级链接到旧版本后端且并非全部与最新应用程序兼容的所有应用程序 我们确实需要尽快更新配置文件 以保持旧应用程序正常运行 我们之前已经这样做过 但
  • 如何在 swift 4 中进行两个并发 API 调用

    预先感谢您的帮助 我有两个 API 调用 都是并发的 任何调用都可以先成功 我不想按顺序调用 在两个调用成功后 我必须停止我的活动指示器并重新加载我的 tableView 这是我的代码 但我不知道这是正确的方法 也不知道如何重新加载我的 t
  • CFBundle可执行文件丢失或无效

    尝试在 iOS 模拟器中运行我的项目时 我收到启动代码错误 0 检查 CoreSimulator log 中的控制台日志 我发现了 app 可执行文件 其 Info plist 中缺少或无效 CFBundleExecutable 我不知道如
  • set-key-partition-list codesign 后仍提示密钥访问

    我正在导入一个PEM使用以下命令包含我的代码签名身份的公钥和私钥的文件 security import PEM FILE k Library Keychains login keychain T usr bin codesign T usr
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • iOS:调用 Objective-C 方法的处理开销是多少?

    我正在编写一些实时音频处理代码 该代码将在音频单元的渲染回调中执行 该线程处于系统识别的最高优先级 Apple 指示最大限度地减少此调用中进行的处理量 他们的建议之一是避免 Objective C 方法调用 But why 调用 Objec
  • @Font-face 不适用于 IOS

    我正在开发一个 WordPress 网站 并且在每个页面上都有一个 H1 标签作为该页面的标题 我正在使用 font face 的特殊字体 它在每个浏览器的 Windows 上都运行良好 但是当我切换到 Mac 时 它不会显示 h1 标签
  • UIPickerView - 对多行行使用自定义视图 - 需要布局建议

    我有一个 UIPickerView 它将为用户显示项目列表 我希望每个项目都显示为多行文本 每行使用不同的字体大小 一个粗略的模型如下所示 这将允许显示比默认 UIPickerView 的单行所能容纳的更多文本 bdesham 指出我在 U
  • :hover 状态在 iOS 上不会结束

    我有一个带有悬停状态的简单菜单
  • UISegmentedControl 中的自定义字体禁用调整FontSizeToFitWidth

    我已经为我的 UISegmentedControl 设置了自定义字体 但它似乎禁用了默认字体自动调整字体大小以适合宽度范围 Before After 这是我用来设置自定义字体的代码 UISegmentedControl segmentedC
  • iOS 8 支持动态链接吗?

    直到 iOS7 之前 出于安全考虑 Apple 都不支持动态链接 开发人员之间的代码重用通常依赖于静态库 这些静态库是作为应用程序可执行文件的一部分构建的 在 iOS8 中引入扩展似乎稍微改变了这一点 因为扩展是单独的可执行文件 扩展及其包
  • CLLocation Manager如何在一定距离后更新

    我正在使用 CLLocationManager didupdatelocations 如下所示 func locationManager manager CLLocationManager didUpdateLocations locati
  • iPhone iOS 保存从 UIImageJPEGRepresentation() 获得的数据第二次失败:ImageIO: CGImageRead_mapData 'open' failed

    我的 UIImage 操作遇到了一个奇怪的问题 我正在进行保管箱同步 并且必须将我的图像存储为本地文件 为此 我使用以下命令保存它们UIImagePNGRepresentation image or UIImageJPEGRepresent
  • 如何在 iOS 上压缩 Realm DB?

    我想定期压缩 iOS 上的 Realm 实例以回收空间 我认为该过程是将数据库复制到临时位置 然后将其复制回来并使用新的default realm 文件 我的问题是Realm 其行为就像单例并回收对象 因此我无法真正关闭它并告诉它打开新的
  • UITextView 动画更改框架不会动画文本重新分配

    我有一个 UITextView 我试图在用户点击按钮时为框架的变化设置动画 基本上 文本视图会变大以适应屏幕 以便可以显示更多文本 然后当用户再次点击按钮时 它会缩小到原始框架 我使用块执行动画 如下所示 if isDisplayingDe
  • 是否可以使“HTML 到语音”与“文本到语音”相同?

    我有一个奇怪的要求 在我现有的应用程序中我有Text2Speech为此 我使用了AVSpeechSynthesizer 到语音文本 但现在要求发生了变化 现在我需要将 HTML 文件数据转换为文本 例如HTML2Speech 我们可以想到的

随机推荐

  • 如何在 Oracle 中向日期添加前导零?

    如果数字少于两位数 我需要在数字中添加前导零 并将两个这样的数字组合成一个数字 并且它们之间没有空格 我的尝试 select extract year from t Dt to char extract month from t Dt 09
  • Lucene.Net 和孵化状态

    我正在评估各种选项 以使我们的 Net 网站上的搜索功能更加强大 我需要研究一下我们是否购买软件 硬件 例如 Google Search Appliance GSA 还是使用 Lucene Net 等框架来开发解决方案 我们是一家初创公司
  • 阻止 Xcode 从静态库中删除未使用的符号

    我已经构建了一个静态库 我的 iOS 二进制文件正在链接其中 静态库的代码剥离已关闭 等等 我可以看到存档中的符号 通过 nm 因此 我将该库作为框架链接到我的应用程序中 但是 我实际上并没有直接调用该函数 因此 我可以看到我在二进制文件中
  • 如何将所有请求重定向到 laravel 5 中的 public/ 文件夹

    我有一个经典的 Laravel 5 项目结构 我需要将所有请求重定向到public 我处于经典的托管环境中 所以public 是我的文档根目录的子文件夹 我想这可以通过 htaccess 完成 但我仍然需要弄清楚如何完成 有人可以帮忙吗 T
  • Spring 上的嵌套事务

    在使用嵌套 Spring 事务时 我发现了一些奇怪的行为 当在同一个类中 一个方法注释为 Transactional调用另一个方法也注释为 Transactional不使用第二个注释 让我们考虑下面的类 public class Main
  • 如何在 Windows 7 x64 上的 python 3.4 中使用 OpenCV? [复制]

    这个问题在这里已经有答案了 I have windows 7 x64 and python 3 4 我尝试使用cv2 module import numpy as np import cv2 img cv2 imread messi5 jp
  • 如何为maven中属性集下声明的属性设置类路径

    我正在努力从 ant 构建工具转换为 Maven 工具 Ant build xml 已通过以下方式初始化属性
  • parse_dates 如何与 pd.read_sql_query 一起使用

    从 MySQL 数据库检索数据时 Pandas parse date 应该如何工作 的文档熊猫0 23 https pandas pydata org pandas docs stable generated pandas read sql
  • DAX 中的递归

    我不知道这是否可能 但我希望能够创建一个计算列 其中每行都依赖于其上方的行 一个典型的例子是斐波那契数列 https en wikipedia org wiki Fibonacci number 其中序列由递归关系定义F n F n 1 F
  • 电子邮件地址的正则表达式不起作用

    我正在尝试使用以下代码检查某些电子邮件地址是否正确 NSPredicate regexMail NSPredicate predicateWithFormat SELF MATCHES if regexMail evaluateWithOb
  • 存储倒排索引

    我正在从事一个关于信息检索的项目 我使用 Hadoop Python 制作了完整倒排索引 Hadoop 将索引输出为写入文件的 单词 文档列表 对 为了快速访问 我使用上面的文件创建了一个字典 哈希表 我的问题是 如何在磁盘上存储这样一个具
  • 为什么属性“禁用”而不是“启用”

    我总感觉disabledHTML 属性
  • 为什么 ui.item.attr("id") 返回未定义的值?

    我正在处理之间的可排序 li of ul 但当我试图得到ui item attr id 我未定义 但其他变量运行良好 例如 this attr id and ui sender attr id 但我正在搜索的索引 ul 元素从哪里拖动 我的
  • Rails Gem Devise 是否有解决方案允许用户拥有多个电子邮件?

    我正在寻找一种解决方案 允许我的应用程序上的用户拥有超过 1 封电子邮件 这应该与 Facebook LinkedIn 和 Quora 类似 一个帐户可以有多个电子邮件地址 其中 1 个作为主要电子邮件地址 是否有可用的设备交钥匙解决方案
  • 正确的 ARIA 处理面包屑导航

    可以采取哪些措施来提高面包屑菜单的可访问性 类似于 ul class breadcrumbs li a href Home a li li a href news News a li li class unavailable a href
  • Blazor - Web 组件 - WebAssembly - 微前端

    我正在研究微前端并能够使用不同技术构建功能 到目前为止 创建 Web 组件并在 Monolith 上使用它们是我发现的最佳方法 研究创建 Web 组件并在不同服务中提供模块的不同方法是一种有趣的体验 使用 Blazor 查看 WebAsse
  • 为什么添加简单的 SQL 查询作为 Power BI 数据源会阻止本机查询折叠?

    我已经添加了SQL数据源 然后 我没有选择表 而是输入了以下查询 SELECT ID NAME AGE FROM STUDENTS 当我右键单击该步骤时 我看到本机查询选项被禁用 为什么添加简单的 SQL 查询作为 Power BI 数据源
  • MS Access 准备好的语句

    是否可以在 MS Access 中对 VBA 中的本地表执行准备好的语句 如下所示 UPDATE part SET part description WHERE part id 如果是这样 它是如何完成的 Dim db As DAO Dat
  • Java 正则表达式帮助:捕获键值对

    我正在尝试从具有以下形式的字符串中捕获键值对 a0 d235 a1 2314 com1 abcd com2 a b c d 使用来自的帮助这个帖子 https stackoverflow com questions 168171 regul
  • iOS - 循环单元格并检索数据

    抱歉 我对 iOS 开发还很陌生 我有一个UITableView从单个 XiB 笔尖拉出的单元进行设置 我在笔尖中创建了一个开 关开关 并且我试图保存开关的状态viewWillDisappear我拥有的细胞数量 准确地说是 6 个单元 如何