ios - 仅警告一次:UITableView 被告知布局其可见单元格和其他内容而不在视图层次结构中?
问题描述
我在 viewController 上添加了 tableView。当我打开此屏幕时,我将收到以下警告一次。
[TableView] 仅警告一次:UITableView 被告知布局其可见单元格和其他内容而不位于视图层次结构中(表视图或其超级视图之一尚未添加到窗口中)。这可能会通过强制表视图中的视图在没有准确信息的情况下加载和执行布局(例如表视图边界、特征集合、布局边距、安全区域插入等)而导致错误,并且还会由于额外的布局传递而导致不必要的性能开销. 在 UITableViewAlertForLayoutOutsideViewHierarchy 处创建一个符号断点,以便在调试器中捕获它并查看导致这种情况发生的原因,因此如果可能的话,您可以完全避免此操作,或者将其推迟到表格视图添加到窗口中。表格视图:<UITableView: 0x7fe2ba8d5a00; 帧 = (-47 -80; 394 553); clipsToBounds = YES; 自动调整大小 = RM+BM;手势识别器 = <NSArray: 0x600003447480>; 层 = <CALayer: 0x600003aa2be0>; 内容偏移:{0, 0}; 内容大小:{394, 176};调整内容插入:{0, 0, 0, 0}; 数据源:<Project.MondayToSundayViewController:0x7fe2b9da05c0>>
为 UITableViewAlertForLayoutOutsideViewHierarchy 添加符号断点后,控制台中将显示以下内容。
> UIKitCore`UITableViewAlertForLayoutOutsideViewHierarchy:
-> 0x7fff48260c7e <+0>: pushq %rbp
0x7fff48260c7f <+1>: movq %rsp, %rbp
0x7fff48260c82 <+4>: pushq %r14
0x7fff48260c84 <+6>: pushq %rbx
0x7fff48260c85 <+7>: subq $0x30, %rsp
0x7fff48260c89 <+11>: callq *0x3e51a6a1(%rip) ; (void *)0x00007fff51411350: objc_retain
0x7fff48260c8f <+17>: movq %rax, %rbx
0x7fff48260c92 <+20>: leaq 0x416a8dbf(%rip), %rdi ; _UIInternalPreference_UITableViewEnableAlertForLayoutOutsideViewHierarchy
0x7fff48260c99 <+27>: leaq 0x3e5a2140(%rip), %rsi ; @"UITableViewEnableAlertForLayoutOutsideViewHierarchy"
0x7fff48260ca0 <+34>: callq 0x7fff482a7529 ; _UIInternalPreferenceUsesDefault
0x7fff48260ca5 <+39>: testb %al, %al
0x7fff48260ca7 <+41>: jne 0x7fff48260cb3 ; <+53>
0x7fff48260ca9 <+43>: movb 0x416a8dad(%rip), %al ; _UIInternalPreference_UITableViewEnableAlertForLayoutOutsideViewHierarchy + 4
0x7fff48260caf <+49>: andb $0x1, %al
0x7fff48260cb1 <+51>: je 0x7fff48260d2d ; <+175>
0x7fff48260cb3 <+53>: leaq 0x416c3ffe(%rip), %rax ; _UIApplicationLinkedOnVersion
0x7fff48260cba <+60>: movl (%rax), %eax
0x7fff48260cbc <+62>: testl %eax, %eax
0x7fff48260cbe <+64>: je 0x7fff48260d3e ; <+192>
0x7fff48260cc0 <+66>: cmpl $0xd0000, %eax ; imm = 0xD0000
0x7fff48260cc5 <+71>: jb 0x7fff48260d2d ; <+175>
0x7fff48260cc7 <+73>: movq %rbx, %rdi
0x7fff48260cca <+76>: callq 0x7fff486252fa ; symbol stub for: objc_opt_class
0x7fff48260ccf <+81>: movq 0x41607402(%rip), %rsi ; "_isInternalTableView"
0x7fff48260cd6 <+88>: movq %rax, %rdi
0x7fff48260cd9 <+91>: callq *0x3e51a641(%rip) ; (void *)0x00007fff513f7780: objc_msgSend
0x7fff48260cdf <+97>: testb %al, %al
0x7fff48260ce1 <+99>: jne 0x7fff48260d2d ; <+175>
0x7fff48260ce3 <+101>: movq 0x3e519b46(%rip), %rax ; (void *)0x00007fff89ea06a0: _NSConcreteStackBlock
0x7fff48260cea <+108>: movq %rax, -0x38(%rbp)
0x7fff48260cee <+112>: movl $0xc2000000, %eax ; imm = 0xC2000000
0x7fff48260cf3 <+117>: movq %rax, -0x30(%rbp)
0x7fff48260cf7 <+121>: leaq 0x46728(%rip), %rax ; __UITableViewAlertForLayoutOutsideViewHierarchy_block_invoke
0x7fff48260cfe <+128>: movq %rax, -0x28(%rbp)
0x7fff48260d02 <+132>: leaq 0x3e51d237(%rip), %rax ; __block_descriptor_40_e8_32s_e5_v8?0l
0x7fff48260d09 <+139>: movq %rax, -0x20(%rbp)
0x7fff48260d0d <+143>: movq %rbx, %rdi
0x7fff48260d10 <+146>: callq *0x3e51a61a(%rip) ; (void *)0x00007fff51411350: objc_retain
0x7fff48260d16 <+152>: movq %rax, -0x18(%rbp)
0x7fff48260d1a <+156>: cmpq $-0x1, 0x416ca5c6(%rip) ; _UIInternalPreference_TableViewReorderingUsesDragAndDrop_block_invoke_10.__s_category + 7
0x7fff48260d22 <+164>: jne 0x7fff48260d52 ; <+212>
0x7fff48260d24 <+166>: movq %rax, %rdi
0x7fff48260d27 <+169>: callq *0x3e51a5fb(%rip) ; (void *)0x00007fff51411000: objc_release
0x7fff48260d2d <+175>: movq %rbx, %rdi
0x7fff48260d30 <+178>: addq $0x30, %rsp
0x7fff48260d34 <+182>: popq %rbx
0x7fff48260d35 <+183>: popq %r14
0x7fff48260d37 <+185>: popq %rbp
0x7fff48260d38 <+186>: jmpq *0x3e51a5ea(%rip) ; (void *)0x00007fff51411000: objc_release
0x7fff48260d3e <+192>: movl $0xd0000, %edi ; imm = 0xD0000
0x7fff48260d43 <+197>: callq 0x7fff48093724 ; _UIApplicationLinkedOnOrAfter
0x7fff48260d48 <+202>: testb %al, %al
0x7fff48260d4a <+204>: jne 0x7fff48260cc7 ; <+73>
0x7fff48260d50 <+210>: jmp 0x7fff48260d2d ; <+175>
0x7fff48260d52 <+212>: leaq 0x416ca58f(%rip), %rdi ; UITableViewAlertForLayoutOutsideViewHierarchy.once
0x7fff48260d59 <+219>: leaq -0x38(%rbp), %r14
0x7fff48260d5d <+223>: movq %r14, %rsi
0x7fff48260d60 <+226>: callq 0x7fff48624f8e ; symbol stub for: dispatch_once
0x7fff48260d65 <+231>: movq 0x20(%r14), %rax
0x7fff48260d69 <+235>: jmp 0x7fff48260d24 ; <+166>
你能帮我删除警告吗?
解决方案
在将视图添加到视图层次结构之前添加了约束。这就是您收到此错误的原因。确保轮流添加,例如:
view.addSubview(tableView) // 1
// 2 and start adding constraints..
tableView.translatesAutoresizingMaskIntoConstraints = false
...
推荐阅读
- python - 如何将函数连接到主线程外的 PyQt 信号
- swift - Watchkit 下一页防止按钮执行转场。
- c# - 在 UWP 中对多行文本框使用 SHIFT + ENTER
- xamarin - AVCaptureMetadataOutputObjectsDelegate、DidOutputMetadataObjects 并不总是被调用
- javascript - 浏览器关闭时,反应网络应用程序中的计时器在移动设备中不起作用
- coldfusion - 在 Lucee 中产生 perlin 噪声的最简单方法是什么?
- struct - structAppend 与重复
- c# - 如何在 DotRas C# 中删除 VPN 连接 (.pbk)?
- java - junit 测试中的 JPA 存储库为空
- java - 存储由 Handler 运行的递归 Runnable 的运行计数的最佳方法?