问题标签 [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.
multithreading - NSIndexPath 是线程安全的吗?
Apple 的多线程文档没有NSIndexPath
列为线程安全的!作为一个不可变的类,我通常希望它是线程安全的。
以前,我确信用于说明NSIndexPath
实例是共享且全局唯一的文档。不过现在这似乎已经消失了,这让我怀疑设计是针对 iOS5 / Mac OS X 10.7 进行的修改。
我在 Mac OS X 10.6 (Snow Leopard) 上看到了很多来自客户的崩溃报告,这些报告似乎在尝试访问索引路径时崩溃了。因此我想知道:实际实例线程安全吗,但是将它们从共享缓存中拉出的逻辑不是吗?有没有人有任何见识?
这是一个示例堆栈跟踪顺便说一句:
对我来说,这是一个NSIndexPath
试图将自己与释放的实例进行比较的实例。
objective-c - selectRowAtIndexPath: 动画: scrollPosition: - 行被“选中”
我正在使用以下代码滚动到 tableView 的顶部:
它工作得很好,但我想避免目标行被“选中”。见下图:
关于如何在此代码运行后“取消选择”行的任何想法?或者更好的是,以不首先“选择”目标行的方式运行此代码?
iphone - 在 UITableViews 之间传递 NSIndexPath
我有一个UITableView
来自 plist 文件的显示数据。对于这个表格视图,我只是NSArray
从 plist 文件的内容中创建了一个并将数据输入到每个单元格中。但是当一个单元格被点击时,我需要下一个表视图控制器知道被点击的单元格的索引路径,以便这个视图控制器知道数组中的哪个项目要显示详细信息。我尝试了以下方法:
上面,我试图将点击单元格的索引路径传递给NSIndexPath
我在新视图控制器中创建的对象。
下一个表视图控制器的头文件:
这里我定义了selectedIndexPath
在前一个视图控制器中设置的对象。
但是当我尝试访问该selectedIndexPath
对象以显示相关数据时,该对象似乎是nil
:
我是否selectedIndexPath
错误地访问了对象?是否有更好的方法将正确的索引路径传递给下一个视图控制器?
iphone - 使用不同的类删除单元格时出现 NSInvalidArgumentException
代码更新:在马修的回答之后,我尝试更正我的代码以使其更正确。现在代码确实删除了单元格,但也会崩溃并给出错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象”
checkboxTapped
下面的代码来自我的代码中调用的操作CustomCell
。一旦动作被触发,它就会给出错误。我发现 myindexPath
等于NULL
,这很可能是问题所在。但我不知道如何解决它。
旧:我查看了我的代码并打印了我正在使用的数组,它看起来很好,但这个错误仍然存在。
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayM removeObjectAtIndex:]: index 1 beyond bounds [0 .. 0]”
我的猜测是它与我有关indexPath
,但我改变它的程度并没有太大的不同。
ios - 仅使 UITableView 的某些部分可编辑
我有一个包含多个部分的 UITableView,我只想让一个部分可编辑(滑动删除)。
我有一种感觉我必须在委托方法中做一些事情willBeginEditingRowAtIndexPath
,但我似乎无法弄清楚。
objective-c - 如何增加 NSIndexPath
我有一种数据情况,我想使用索引路径。当我遍历数据时,我想增加 NSIndexPath 的最后一个节点。我到目前为止的代码是:
这感觉有点笨拙-有更好的方法吗?
ios - UITableView selectRowAtIndexPath 的断言失败
我觉得这是一个需要特别注意的问题......我的 Google-fu 非常好,但我无法获得任何有用的东西。
这是最简单的事情,但我似乎无法弄清楚它的问题所在。
我有一个 UITableView。这是我的 VC 调用 _form 的子视图。我将它用于样式目的,而不是真正显示数据。它有 2 个细胞。
在某个事件中,我尝试使用 selectRowAtIndexPath:animated:scrollPosition 选择不同的单元格。
当我这样做时,它会发出 SIGABRTS。
一个简单的例子:
按钮的标题已更改,并且表格打印所选行是 0 或 1,但在尝试选择所需的单元格时,它会中断:
我的假设是,这意味着我的表的配置方式有问题,但我不确定是什么。正常选择表格中的单元格(单击它)正在工作,正如我的 tableView:didSelectRowAtIndexPath 中的预期响应所示。除了这个,其他一切都适用于我的设置方式。
(另外,我其他人回复了额外的调试信息,而不仅仅是“(gdb)”。我怎么能得到这个?)
谢谢!
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 尝试释放已释放的内存,是否有一种安全的方法可以防止应用程序崩溃(请参阅上面的确切代码)。
uitableview - 检查完成的导航控制器动画
我现在知道,如果您将视图控制器推送到带有动画的导航控制器上,则必须等到该动画完成后再推送另一个视图控制器,否则您会收到警告并可能出现意外结果。
您如何检查导航控制器动画是否已完成以避免此问题?
谢谢
objective-c - 无法从 UITableViewController 到达 UITableView 的第 0 部分
我有一个表格视图表单,用户应该在其中输入一些信息(问题和选择)。基本上,当用户单击最后一部分时,正在收集文本字段和其他元素。
在didSelectRowAtIndexPath
功能中,我试图访问这些文本字段并获取它们的值:
它在控制台中给出这个输出:
简而言之,我无法访问第 0 节中的文本字段。我尝试添加第二行,它也返回 null。我尝试交换问题和选择单元格的部分,当时它为对应于选择的第 0 部分返回 null。问题单元运行良好。我还尝试增加节数,所以问题单元格在第 1 节,选择在第 2 节等等......然后它为第 1 节返回 null。我不知道发生了什么,这是一个非常奇怪的问题。
顺便说一句,我可以在等于第 0 节中行的索引路径时访问单元格。但是当它不是时,它会在我这样做时返回didSelectRowAtIndexPath
null 。indexPath
[NSIndexPath indexPathForRow:0 inSection:0]
例如在didSelectRowAtIndexPath
:
当我将“fooBar”写入第 0 节中的问题输入并单击第 4 节中的单元格(“询问”按钮)时给出此输出:
并在我单击第 0 部分的单元格时给出这个,这是带有问题输入的单元格:
提前致谢...