【问题标题】:iOS 12 SDK require autolayout?iOS 12 SDK 需要自动布局?
【发布时间】:2018-10-08 15:20:32
【问题描述】:

我使用 iOS SDK 12 在 Xcode 10 中启动了一个新项目。我选择了 Master-Detail App 模板。我可以从一开始就运行该应用程序,而无需对项目进行任何更改并且它可以工作。但是,当我所做的唯一更改是关闭 Main.storyboard 中的自动布局时,应用程序在主视图中选择项目并将其发送到详细视图时崩溃。即使我所做的唯一更改是关闭自动布局。

iOS 12 SDK 是否需要自动布局?

在 Xcode 9 中,在 Master-Detail 应用模板中关闭 Autolayout 不会导致此崩溃。

任何帮助将不胜感激,我知道我应该过渡到自动布局而不是手动执行所有操作,但我已经做到了。

下面是吐出的错误。

    2018-10-08 11:16:02.968981-0400 Trial2[1100:19064] -[DetailViewController topViewController]: unrecognized selector sent to instance 0x7fbb3652b350
2018-10-08 11:16:02.981283-0400 Trial2[1100:19064] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DetailViewController topViewController]: unrecognized selector sent to instance 0x7fbb3652b350'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010f2ce29b __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x000000010df3f735 objc_exception_throw + 48
    2   CoreFoundation                      0x000000010f2ecfa4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   UIKitCore                           0x0000000111cac163 -[UIResponder doesNotRecognizeSelector:] + 287
    4   CoreFoundation                      0x000000010f2d2fb6 ___forwarding___ + 1446
    5   CoreFoundation                      0x000000010f2d4e88 _CF_forwarding_prep_0 + 120
    6   Trial2                              0x000000010d61d049 -[MasterViewController prepareForSegue:sender:] + 361
    7   UIKitCore                           0x0000000111dc05c7 -[UIStoryboardSegueTemplate _performWithDestinationViewController:sender:] + 182
    8   UIKitCore                           0x0000000111dc04e3 -[UIStoryboardSegueTemplate _perform:] + 82
    9   UIKitCore                           0x0000000111dc07a5 -[UIStoryboardSegueTemplate perform:] + 157
    10  UIKitCore                           0x0000000111e19cbb -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1703
    11  UIKitCore                           0x0000000111e19f44 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 344
    12  UIKitCore                           0x00000001118d097e _runAfterCACommitDeferredBlocks + 318
    13  UIKitCore                           0x00000001118bf424 _cleanUpAfterCAFlushAndRunDeferredBlocks + 384
    14  UIKitCore                           0x00000001118ee870 _afterCACommitHandler + 135
    15  CoreFoundation                      0x000000010f231037 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    16  CoreFoundation                      0x000000010f22b4ce __CFRunLoopDoObservers + 430
    17  CoreFoundation                      0x000000010f22bb61 __CFRunLoopRun + 1537
    18  CoreFoundation                      0x000000010f22b221 CFRunLoopRunSpecific + 625
    19  GraphicsServices                    0x00000001175f91dd GSEventRunModal + 62
    20  UIKitCore                           0x00000001118c5115 UIApplicationMain + 140
    21  Trial2                              0x000000010d61bef0 main + 112
    22  libdyld.dylib                       0x000000011099b551 start + 1
    23  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Stephen Darlington 回答后更新

第一张图是项目创建时的初始故事板。 第二张图是关闭自动布局时故事板的变化情况。

【问题讨论】:

    标签: ios uitableview master-detail xcode10 ios12


    【解决方案1】:

    这与自动布局无关。仍然完全支持“手动”布局;自动布局只是 Apple 的 首选 方法。

    相反,错误出现在堆栈跟踪的第一行:

    -[DetailViewController topViewController]: unrecognized selector sent to instance 0x7fbb3652b350
    

    看起来UINavigationController 已在某处被删除,而topViewController 正被发送到视图控制器。

    【讨论】:

    • 谢谢。我添加到我的初始帖子中。当我关闭 Autolayout 时,我没有意识到 Xcode 改变了故事板的 segues。在将 segues 恢复到原来的样子后,一切又开始工作了。
    猜你喜欢
    • 2020-01-09
    • 2014-10-23
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多