2012-03-13 3 views
0

Я пытаюсь отобразить представление, содержащее сведения об учетной записи пользователя. Будучи достаточно новым для разработки iOS, следующий код - это то, что должно работать (на основе документов и запросов). Тем не менее, сбой приложения и я получаю ошибку о том, непризнанный селектор:Отображение нового вида в IOS

2012-03-13 16:32:25.616 UrbanAgendaApp[4993:207] Displaying profile view 
2012-03-13 16:32:25.635 UrbanAgendaApp[4993:207] -[UAFirstViewController presentViewController:animated:completion:]: unrecognized selector sent to instance 0x4b45240 
2012-03-13 16:32:25.674 UrbanAgendaApp[4993:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UAFirstViewController presentViewController:animated:completion:]: unrecognized selector sent to instance 0x4b45240' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x00fbabe9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x0110f5c2 objc_exception_throw + 47 
    2 CoreFoundation      0x00fbc6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x00f2c366 ___forwarding___ + 966 
    4 CoreFoundation      0x00f2bf22 _CF_forwarding_prep_0 + 50 
    5 UrbanAgendaApp      0x00002308 -[UAFirstViewController showProfileView] + 168 
    6 UrbanAgendaApp      0x00002254 -[UAFirstViewController myUaBtnTouch:] + 52 
    7 UIKit        0x00014a6e -[UIApplication sendAction:to:from:forEvent:] + 119 
    8 UIKit        0x000a31b5 -[UIControl sendAction:to:forEvent:] + 67 
    9 UIKit        0x000a5647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    10 UIKit        0x000a41f4 -[UIControl touchesEnded:withEvent:] + 458 
    11 UIKit        0x000390d1 -[UIWindow _sendTouchesForEvent:] + 567 
    12 UIKit        0x0001a37a -[UIApplication sendEvent:] + 447 
    13 UIKit        0x0001f732 _UIApplicationHandleEvent + 7576 
    14 GraphicsServices     0x00cbea36 PurpleEventCallback + 1550 
    15 CoreFoundation      0x00f9c064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    16 CoreFoundation      0x00efc6f7 __CFRunLoopDoSource1 + 215 
    17 CoreFoundation      0x00ef9983 __CFRunLoopRun + 979 
    18 CoreFoundation      0x00ef9240 CFRunLoopRunSpecific + 208 
    19 CoreFoundation      0x00ef9161 CFRunLoopRunInMode + 97 
    20 GraphicsServices     0x00cbd268 GSEventRunModal + 217 
    21 GraphicsServices     0x00cbd32d GSEventRun + 115 
    22 UIKit        0x0002342e UIApplicationMain + 1160 
    23 UrbanAgendaApp      0x00001c2a main + 170 
    24 UrbanAgendaApp      0x00001b75 start + 53 
    25 ???         0x00000001 0x0 + 1 
) 
terminate called after throwing an instance of 'NSException' 

Метод, где это происходит в методе в FirstViewController, который вызывается в результате подправить событий внутри кнопки:

-(void)showProfileView { 
    NSLog(@"%@", @"Displaying profile view"); // *** 

    UAProfileView *profileView = [[UAProfileView alloc] init]; 

    [self presentViewController:profileView animated:TRUE completion:0]; 
} 

Это UAProfielView подкласс UIViewController и был создан вместе с соответствующим файлом .xib.

Итак, вопрос в том, как мне отобразить это новое представление в приложении для iPhone? Использование раскадровки не является вариантом, потому что я должен поддерживать iOS 4.0.

+0

Ваш 'self' (UAFirstViewController) сбой, потому что он не понимает presentViewController: ... Является ли UAFirstViewController подклассом UIViewController? – amattn

+0

@amattn Да, это подкласс UIViewController. –

+0

Вы уже пробовали NULL для завершения, а не 0? –

ответ

3

В документации для presentViewController:animated:completion: указано, что он поддерживается только на iOS 5.0 и выше. Вы упомянули о поддержке iOS 4.0.

Попробуйте presentModalViewController:animated: вместо этого. В качестве альтернативы используйте nagivationController и do pushViewController:animated:

2

@Mike, убедитесь, что вы подключили наконечник к владельцу файла.

+0

Наконечник был создан вместе с контроллером Xcode. Я дважды проверю владельца. –

1

Предположительно, базовый класс UAFirstViewController также является UIViewController? Получаете ли вы какие-либо предупреждения при создании?

Я лично использовал бы completion:nil, но я не думаю, что это изменит ситуацию.

Итак, если у вас нет предупреждений, включите зомби и посмотрите, имеете ли вы дело с мертвым объектом. Инструкции здесь

How to enable NSZombie in Xcode?

Запустить программу и посмотреть, если вы получите предупреждение о зомби в консоли. Если это так, то управление памятью неверно.

Если все это нормально, отправьте код, где вы вызываете showProfileView.

Смежные вопросы