Подтвердить что ты не робот

Что такое ошибка: "Причина NSInvalidArgumentException: приложение попыталось представить контроллер модального представления на себе

Когда я пытаюсь запустить приложение, он разбивает меня Это сообщение, которое я получаю:

2014-07-25 14:40:28.116 X[13023:60b] (null)
2014-07-25 14:40:29.113 X[13023:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modal view controller on itself. Presenting controller is <GKHostedAuthenticateViewController: 0x10d625f90>.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001028a1495 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x00000001024e399e objc_exception_throw + 43
    2   UIKit                               0x0000000101190cdc -[UIViewController presentViewController:withTransition:completion:] + 4100
    3   CoreFoundation                      0x0000000102896f1c __invoking___ + 140
    4   CoreFoundation                      0x0000000102896dc4 -[NSInvocation invoke] + 308
    5   UIKit                               0x0000000101181abc -[_UIDelayedPresentationContext finishDelayedPresentation:] + 201
    6   GameCenterUI                        0x000000010c97f330 __41-[GKRemoteViewController setupRemoteView]_block_invoke + 37
    7   CoreFoundation                      0x0000000102896f1c __invoking___ + 140
    8   CoreFoundation                      0x0000000102896dc4 -[NSInvocation invoke] + 308
    9   libdispatch.dylib                   0x000000010340a851 _dispatch_call_block_and_release + 12
    10  libdispatch.dylib                   0x000000010341d72d _dispatch_client_callout + 8
    11  libdispatch.dylib                   0x000000010340d3fc _dispatch_main_queue_callback_4CF + 354
    12  CoreFoundation                      0x00000001028ff289 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    13  CoreFoundation                      0x000000010284c854 __CFRunLoopRun + 1764
    14  CoreFoundation                      0x000000010284bd83 CFRunLoopRunSpecific + 467
    15  GraphicsServices                    0x0000000103efdf04 GSEventRunModal + 161
    16  UIKit                               0x0000000101090e33 UIApplicationMain + 1010
    17  X                              0x00000001000064c3 main + 115
    18  libdyld.dylib                       0x000000010366e5fd start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

В чем может быть проблема? До сих пор он работал хорошо, неожиданно это случилось Спасибо всем помощникам

обновление: @Святослав Якимов нашел это, я думаю,

- (void)authenticateLocalUser {

if (!gameCenterAvailable) return;


GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if (SYSTEM_VERSION_LESS_THAN(@"6.0"))
{
    // ios 5.x and below
    [localPlayer authenticateWithCompletionHandler:^(NSError *error)
     {
         [self checkLocalPlayer];
     }];
}
else
{
    // ios 6.0 and above
    [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
        if (!error && viewcontroller)
        {
            [viewcontroller presentViewController:viewcontroller animated:YES completion:nil];
        }
        else
        {
            [self checkLocalPlayer];
        }
    })];
}

}

Что я могу изменить без краха? спасибо

4b9b3361

Ответ 1

Вы пытаетесь представить контроллер от себя. Вероятно, ваш код содержит следующее:

[self presentViewController:self completion:nil];

Теперь, когда я увидел ваш код, я могу предоставить рабочий код:

Заменить

[viewcontroller presentViewController:viewcontroller animated:YES completion:nil];

с

[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:viewcontroller animated:YES completion:nil];

Ответ 2

Такая же ошибка для меня, когда я случайно вызвал

presentViewController:

дважды.

Ответ 3

Вы не создали свой xib должным образом. Проверьте все ваши подключения и делегатов. Ваши последние изменения в xib ввели некоторые проблемы. Это исключение вызывается, когда ваш xib/раскадровка не подходит.