问题标签 [nsindexpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
923 浏览

multithreading - NSIndexPath 是线程安全的吗?

Apple 的多线程文档没有NSIndexPath列为线程安全的!作为一个不可变的类,我通常希望它是线程安全的。

以前,我确信用于说明NSIndexPath实例是共享且全局唯一的文档。不过现在这似乎已经消失了,这让我怀疑设计是针对 iOS5 / Mac OS X 10.7 进行的修改。

我在 Mac OS X 10.6 (Snow Leopard) 上看到了很多来自客户的崩溃报告,这些报告似乎在尝试访问索引路径时崩溃了。因此我想知道:实际实例线程安全吗,但是将它们从共享缓存中拉出的逻辑不是吗?有没有人有任何见识?

这是一个示例堆栈跟踪顺便说一句:

对我来说,这是一个NSIndexPath试图将自己与释放的实例进行比较的实例。

0 投票
1 回答
8039 浏览

objective-c - selectRowAtIndexPath: 动画: scrollPosition: - 行被“选中”

我正在使用以下代码滚动到 tableView 的顶部:

它工作得很好,但我想避免目标行被“选中”。见下图:

在此处输入图像描述

关于如何在此代码运行后“取消选择”行的任何想法?或者更好的是,以不首先“选择”目标行的方式运行此代码?

0 投票
2 回答
1039 浏览

iphone - 在 UITableViews 之间传递 NSIndexPath

我有一个UITableView来自 plist 文件的显示数据。对于这个表格视图,我只是NSArray从 plist 文件的内容中创建了一个并将数据输入到每个单元格中。但是当一个单元格被点击时,我需要下一个表视图控制器知道被点击的单元格的索引路径,以便这个视图控制器知道数组中的哪个项目要显示详细信息。我尝试了以下方法:

上面,我试图将点击单元格的索引路径传递给NSIndexPath我在新视图控制器中创建的对象。

下一个表视图控制器的头文件:

这里我定义了selectedIndexPath在前一个视图控制器中设置的对象。

但是当我尝试访问该selectedIndexPath对象以显示相关数据时,该对象似乎是nil

我是否selectedIndexPath错误地访问了对象?是否有更好的方法将正确的索引路径传递给下一个视图控制器?

0 投票
1 回答
2662 浏览

iphone - 使用不同的类删除单元格时出现 NSInvalidArgumentException

代码更新:在马修的回答之后,我尝试更正我的代码以使其更正确。现在代码确实删除了单元格,但也会崩溃并给出错误:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象”

checkboxTapped下面的代码来自我的代码中调用的操作CustomCell。一旦动作被触发,它就会给出错误。我发现 myindexPath等于NULL,这很可能是问题所在。但我不知道如何解决它。

旧:我查看了我的代码并打印了我正在使用的数组,它看起来很好,但这个错误仍然存​​在。

* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayM removeObjectAtIndex:]: index 1 beyond bounds [0 .. 0]”

我的猜测是它与我有关indexPath,但我改变它的程度并没有太大的不同。

0 投票
2 回答
1672 浏览

ios - 仅使 UITableView 的某些部分可编辑

我有一个包含多个部分的 UITableView,我只想让一个部分可编辑(滑动删除)。

我有一种感觉我必须在委托方法中做一些事情willBeginEditingRowAtIndexPath,但我似乎无法弄清楚。

0 投票
4 回答
7367 浏览

objective-c - 如何增加 NSIndexPath

我有一种数据情况,我想使用索引路径。当我遍历数据时,我想增加 NSIndexPath 的最后一个节点。我到目前为止的代码是:

这感觉有点笨拙-有更好的方法吗?

0 投票
1 回答
2639 浏览

ios - UITableView selectRowAtIndexPath 的断言失败

我觉得这是一个需要特别注意的问题......我的 Google-fu 非常好,但我无法获得任何有用的东西。

这是最简单的事情,但我似乎无法弄清楚它的问题所在。

我有一个 UITableView。这是我的 VC 调用 _form 的子视图。我将它用于样式目的,而不是真正显示数据。它有 2 个细胞。

在某个事件中,我尝试使用 selectRowAtIndexPath:animated:scrollPosition 选择不同的单元格。

当我这样做时,它会发出 SIGABRTS。

一个简单的例子:

按钮的标题已更改,并且表格打印所选行是 0 或 1,但在尝试选择所需的单元格时,它会中断:

我的假设是,这意味着我的表的配置方式有问题,但我不确定是什么。正常选择表格中的单元格(单击它)正在工作,正如我的 tableView:didSelectRowAtIndexPath 中的预期响应所示。除了这个,其他一切都适用于我的设置方式。

(另外,我其他人回复了额外的调试信息,而不仅仅是“(gdb)”。我怎么能得到这个?)

谢谢!

0 投票
2 回答
931 浏览

memory-leaks - UITableView - moveRowAtIndexPath 导致内存泄漏

概述

  • 在一个 iOS 项目中,我有一个UITableView并且我正在尝试移动一行 UITableView。
  • 在我的模型中,数据的顺序已经改变,所以我试图在表格中直观地显示它,这就是我使用UITableView's 方法的原因moveRowAtIndexPath:toIndexPath:
  • 为此,我创建了一个NSIndexPath实例,并将其传递给 UITableView 的方法。

当泄漏发生时

  • 当您使用 NSIndexPath 方法创建一个实例时indexPathForRow: section:(如代码部分所示),然后将其传递给UITableView's 方法moveRowAtIndexPath: toIndexPath:,它会泄漏。

笔记:

  • 我正在使用 ARC(自动引用计数)
  • XCode 4.3.1
  • 我使用 Instruments (Xcode menu - Product > Profile) 来确定内存泄漏

代码:(在 UITableViewController 内)

我尝试过的步骤

  • 注释掉对方法的调用moveRowAtIndexPath:originalIndexPath toIndexPath:,防止内存泄漏
  • 我手动使用过CFRelease(不确定这是自动引用计数环境中的好习惯)

    CFRelease((__bridge void *)toIndexPath);

问题:

  • 为什么会出现这种情况?有什么解决办法吗?
  • 仪器的内存泄漏结果是否准确?
  • UITableView 的方法有错误moveRowAtIndexPath:originalIndexPath toIndexPath:吗?
  • CFRelease 是一种选择吗?如果 CFRelease 尝试释放已释放的内存,是否有一种安全的方法可以防止应用程序崩溃(请参阅上面的确切代码)。
0 投票
2 回答
1994 浏览

uitableview - 检查完成的导航控制器动画

我现在知道,如果您将视图控制器推送到带有动画的导航控制器上,则必须等到该动画完成后再推送另一个视图控制器,否则您会收到警告并可能出现意外结果。

您如何检查导航控制器动画是否已完成以避免此问题?

谢谢

0 投票
1 回答
194 浏览

objective-c - 无法从 UITableViewController 到达 UITableView 的第 0 部分

我有一个表格视图表单,用户应该在其中输入一些信息(问题和选择)。基本上,当用户单击最后一部分时,正在收集文本字段和其他元素。

didSelectRowAtIndexPath功能中,我试图访问这些文本字段并获取它们的值:

它在控制台中给出这个输出:

简而言之,我无法访问第 0 节中的文本字段。我尝试添加第二行,它也返回 null。我尝试交换问题和选择单元格的部分,当时它为对应于选择的第 0 部分返回 null。问题单元运行良好。我还尝试增加节数,所以问题单元格在第 1 节,选择在第 2 节等等......然后它为第 1 节返回 null。我不知道发生了什么,这是一个非常奇怪的问题。

顺便说一句,我可以在等于第 0 节中行的索引路径时访问单元格。但是当它不是时,它会在我这样做时返回didSelectRowAtIndexPathnull 。indexPath[NSIndexPath indexPathForRow:0 inSection:0]

例如在didSelectRowAtIndexPath

当我将“fooBar”写入第 0 节中的问题输入并单击第 4 节中的单元格(“询问”按钮)时给出此输出:

并在我单击第 0 部分的单元格时给出这个,这是带有问题输入的单元格:

提前致谢...