iOS 12 SDK требует автоматического размещения? - PullRequest
0 голосов
/ 08 октября 2018

Я запустил новый проект в Xcode 10, используя iOS SDK 12. Я выбрал шаблон приложения Master-Detail.Я могу запустить приложение с самого начала, не внося никаких изменений в проект, и он работает.Но когда я делаю единственное изменение, я отключаю автоматическое расположение в Main.storyboard, и приложение вылетает при выборе элемента в главном представлении и отправляет его в подробное представление.хотя единственным изменением, которое я сделал, было отключение Autolayout.

Требуется ли в iOS 12 SDK автоматическое расположение?

В Xcode 9 отключение Autolayout в шаблоне приложения 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) 

Обновление после ответа Стивена Дарлингтона

Initial Storyboard when the project was created.

How the storyboard was changed when Autolayout was turned off.

Первая картинка - это как Исходная раскадровка при создании проекта.Второе изображение - «Как раскадровка была изменена при отключении Autolayout».

1 Ответ

0 голосов
/ 08 октября 2018

Это не имеет никакого отношения к autolayout.«Ручной» макет по-прежнему полностью поддерживаетсяautolayout является только предпочтительным методом Apple .

Вместо этого ошибка находится в первой строке трассировки стека:

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

Похоже, что UINavigationController был удаленгде-то и topViewController вместо этого отправляется в контроллер представления.

...