uiview 容器 - viewwithtag 有时返回 null
Posted
技术标签:
【中文标题】uiview 容器 - viewwithtag 有时返回 null【英文标题】:uiview container - viewwithtag returning null sometimes 【发布时间】:2013-08-03 23:14:04 【问题描述】:我有一个奇怪的问题,有时会在随机字段上发生。
我是如何设置的
UiView - 带有 iad 横幅和一个嵌入了表格视图的 uiview 容器。
我正在尝试访问表格视图中的这些字段。我做了一些研究,发现使用带有标签的视图是要走的路,所以给表格视图中的所有 uitextfields 一个标签,然后尝试使用
UITextField *cReg = (UITextField *)[[self containerView] viewWithTag:1];
有时会正确获取 UITextfield,有时会返回 null,我不知道为什么
【问题讨论】:
请准确量化您看到流程失败和成功的时间。 它完全是随机的,没有特定的方法可以让它成功或失败。按下按钮时运行代码 这不是访问单元格内容的最佳方式。当用户点击保存按钮时,您是否需要访问单元格内容?如果是这样,为什么不改用cellForRowAtIndexPath
?
是的,我需要访问在文本字段中输入的文本。我会直接访问它们,但文本字段是在保存函数的单独文件中定义的
您在计算环境中操作。 “完全随机”是不可能的。您是否尝试过设置断点,并使用控制台语句的输出来清除您的对象遇到的问题?
【参考方案1】:
可能会发生什么,这是因为您的UITextFields
都在UITableViewCells
内,而 UITableViewCell 仅在屏幕上显示时才分配在内存中。因此,隐藏的单元格不在内存中,它们的文本字段只是 nil。
就像 Rog 在 cmets 中所说,这不是使用 tableView 访问字段的最佳方式。
【讨论】:
我可以理解,如果它们都返回 null,但有些确实返回了正确的文本,而另一些则没有,两者都在同一个保存操作中。那么考虑到我当前的设置,或者实现相同目标的另一种方法,最好的方法是什么 进行测试。其中一些应该返回正确的值,即屏幕上显示的值。那些为 nil 的,应该是隐藏在 tableView 的滚动中的那些。好吧,如果有人显示并且仍然为零,那么问题就出在其他地方 是的,这似乎是问题所在,如果它们都在屏幕上,它们都很好,而第一个如果滚动则丢失 就像我说的。你必须找到另一个解决方案。你的问题现在得到了回答,你知道为什么他们是零。如果您在寻找另一种获取文本的方法方面仍需要帮助,请编辑您的问题或创建一个新问题。否则,只需接受它即可关闭它。以上是关于uiview 容器 - viewwithtag 有时返回 null的主要内容,如果未能解决你的问题,请参考以下文章