2011-01-31 3 views
0

У меня есть приложение панели вкладок. Все работает нормально, и я могу переключаться между вкладками хорошо и все, кроме случаев, когда я переключаюсь на свою вторую вкладку ProductViewClass, представление не обновляется, и он выводит вывод консоли ниже. У меня нет ничего в этом представлении, кроме UIWebView и UILabel. Когда я удаляю UIWebView, он работает успешно, и когда я добавляю другой, он все еще работает. Он перестает работать только при подключении IBOutlet от владельца файла к UIWebView. Помимо синтеза и высвобождения productWebView только не шаблон кода в ProductWebView.m это:UIWebView throwing NSUnknownKeyException iPad

NSString *urlString = @"http://www.google.com/"; 
    NSURL *theURL = [NSURL URLWithString:urlString]; 
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:theURL]; 
    [productWebView loadRequest:urlRequest]; 
    NSLog(@"Google loaded"); 

Полнота ProductWebView.h выглядит следующим образом:

#import <UIKit/UIKit.h> 
@interface ProductViewClass : UIViewController { 

    IBOutlet UIWebView *productWebView; 
} 

@property(nonatomic, retain) UIWebView *productWebView; 
@end 

Вот консольный вывод:

This GDB was configured as "x86_64-apple-darwin".Attaching to process 52523. 
2011-01-30 19:18:28.907 FairCom[52523:40b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x4d06eb0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key productWebView.' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x00da8be9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x00efd5c2 objc_exception_throw + 47 
    2 CoreFoundation      0x00da8b21 -[NSException raise] + 17 
    3 Foundation       0x000296cf _NSSetUsingKeyValueSetter + 135 
    4 Foundation       0x0002963d -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285 
    5 UIKit        0x004a88d6 -[UIRuntimeOutletConnection connect] + 112 
    6 CoreFoundation      0x00d1f2cf -[NSArray makeObjectsPerformSelector:] + 239 
    7 UIKit        0x004a72ed -[UINib instantiateWithOwner:options:] + 1041 
    8 UIKit        0x004a9081 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168 
    9 UIKit        0x00361a94 -[UIViewController _loadViewFromNibNamed:bundle:] + 70 
    10 UIKit        0x0035f709 -[UIViewController loadView] + 120 
    11 UIKit        0x0035f5e3 -[UIViewController view] + 56 
    12 UIKit        0x00372230 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 120 
    13 UIKit        0x00370d86 -[UITabBarController transitionFromViewController:toViewController:] + 64 
    14 UIKit        0x00372b7e -[UITabBarController _setSelectedViewController:] + 263 
    15 UIKit        0x003729ed -[UITabBarController _tabBarItemClicked:] + 352 
    16 UIKit        0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119 
    17 UIKit        0x004af1f2 -[UITabBar _sendAction:withEvent:] + 422 
    18 UIKit        0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119 
    19 UIKit        0x003401b5 -[UIControl sendAction:to:forEvent:] + 67 
    20 UIKit        0x00342647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    21 UIKit        0x0034016c -[UIControl sendActionsForControlEvents:] + 49 
    22 UIKit        0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119 
    23 UIKit        0x003401b5 -[UIControl sendAction:to:forEvent:] + 67 
    24 UIKit        0x00342647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    25 UIKit        0x003411f4 -[UIControl touchesEnded:withEvent:] + 458 
    26 UIKit        0x002d60d1 -[UIWindow _sendTouchesForEvent:] + 567 
    27 UIKit        0x002b737a -[UIApplication sendEvent:] + 447 
    28 UIKit        0x002bc732 _UIApplicationHandleEvent + 7576 
    29 GraphicsServices     0x016dea36 PurpleEventCallback + 1550 
    30 CoreFoundation      0x00d8a064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    31 CoreFoundation      0x00cea6f7 __CFRunLoopDoSource1 + 215 
    32 CoreFoundation      0x00ce7983 __CFRunLoopRun + 979 
    33 CoreFoundation      0x00ce7240 CFRunLoopRunSpecific + 208 
    34 CoreFoundation      0x00ce7161 CFRunLoopRunInMode + 97 
    35 GraphicsServices     0x016dd268 GSEventRunModal + 217 
    36 GraphicsServices     0x016dd32d GSEventRun + 115 
    37 UIKit        0x002c042e UIApplicationMain + 1160 
    38 FairCom        0x00001be0 main + 102 
    39 FairCom        0x00001b71 start + 53 
    40 ???         0x00000001 0x0 + 1 
) 
terminate called after throwing an instance of 'NSException' 
sharedlibrary apply-load-rules all 
(gdb) 

Спасибо за помощь!

+0

Возможный дубликат [Этот класс не соответствует ключевому значению для ключа] (http://stackoverflow.com/questions/3088059/this-class-is-not-key-value-coding-compliant-for ключ) – jtbandes

ответ

6

Вы загружаете наконечник. В этом наконечнике у вас есть выход с именем productWebView, который подключен, предположительно, к веб-просмотру. Исключение, которое вы видите, говорит вам, что выход productWebView на самом деле не существует. Вот где это странно. Ошибка говорит, что объект <UIViewController 0x4d06eb0> - это тот, у которого отсутствует этот выход. Странный бит - это то, где он говорит UIViewController вместо имени подкласса контроллера реального вида. Похоже, у вас есть наконечник, где владелец файла настроен как один из ваших подклассов диспетчера представлений, но во время выполнения вы фактически используете только экземпляр UIViewController. Вы должны убедиться, что все контроллеры представлений, представляющие вкладки в вашем контроллере панели вкладок, являются фактическими правильными подклассами UIViewController, а не только экземпляром UIViewController.

+0

Спасибо! Я вернулся и посмотрел на мои UITabBarItems, и они не были настроены на какой-либо конкретный nib/class, поэтому интересно, почему они вообще работали! – SeniorShizzle

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