Почему я получаю сообщение об ошибке на панели вкладок? - PullRequest
1 голос
/ 03 июля 2011

Я создаю приложение для iPhone на iOS.У меня есть 3 вкладки в контроллере панели вкладок.Когда я нажимаю на третью вкладку на контроллере панели вкладок в iOS Simulator, симулятор iOS исчезает, и мне показывают файл main.m с зеленым выделением над:

int retVal = UIApplicationMain(argc, argv, nil, nil);

Ошибка сборки гласит, что: Thread1: Программа получила сигнал: SIGABRT

Если я смотрю на окно вывода сборки в нижней части экрана, я вижу следующий текст:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 4283.
**2011-07-03 12:45:37.114 Cypher Bot[4283:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x4e1b190> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key portraitView.'
*** Call stack at first throw:
(
        0   CoreFoundation                      0x00dce5a9 __exceptionPreprocess + 185
        1   libobjc.A.dylib                     0x00f22313 objc_exception_throw + 44
        2   CoreFoundation                      0x00dce4e1 -[NSException raise] + 17
        3   Foundation                          0x007a0677 _NSSetUsingKeyValueSetter + 135
        4   Foundation                          0x007a05e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
        5   UIKit                               0x0021c30c -[UIRuntimeOutletConnection connect] + 112
        6   CoreFoundation                      0x00d448cf -[NSArray makeObjectsPerformSelector:] + 239
        7   UIKit                               0x0021ad23 -[UINib instantiateWithOwner:options:] + 1041
        8   UIKit                               0x0021cab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
        9   UIKit                               0x000d2628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
        10  UIKit                               0x000d0134 -[UIViewController loadView] + 120
        11  UIKit                               0x000d000e -[UIViewController view] + 56
        12  UIKit                               0x000e2f54 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 120
        13  UIKit                               0x000e1aaa -[UITabBarController transitionFromViewController:toViewController:] + 64
        14  UIKit                               0x000e38a2 -[UITabBarController _setSelectedViewController:] + 263
        15  UIKit                               0x000e3711 -[UITabBarController _tabBarItemClicked:] + 352
        16  UIKit                               0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
        17  UIKit                               0x00222ce6 -[UITabBar _sendAction:withEvent:] + 422
        18  UIKit                               0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
        19  UIKit                               0x000b0799 -[UIControl sendAction:to:forEvent:] + 67
        20  UIKit                               0x000b2c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
        21  UIKit                               0x000b0750 -[UIControl sendActionsForControlEvents:] + 49
        22  UIKit                               0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
        23  UIKit                               0x000b0799 -[UIControl sendAction:to:forEvent:] + 67
        24  UIKit                               0x000b2c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
        25  UIKit                               0x000b17d8 -[UIControl touchesEnded:withEvent:] + 458
        26  UIKit                               0x00044ded -[UIWindow _sendTouchesForEvent:] + 567
        27  UIKit                               0x00025c37 -[UIApplication sendEvent:] + 447
        28  UIKit                               0x0002af2e _UIApplicationHandleEvent + 7576
        29  GraphicsServices                    0x01007992 PurpleEventCallback + 1550
        30  CoreFoundation                      0x00daf944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
        31  CoreFoundation                      0x00d0fcf7 __CFRunLoopDoSource1 + 215
        32  CoreFoundation                      0x00d0cf83 __CFRunLoopRun + 979
        33  CoreFoundation                      0x00d0c840 CFRunLoopRunSpecific + 208
        34  CoreFoundation                      0x00d0c761 CFRunLoopRunInMode + 97
        35  GraphicsServices                    0x010061c4 GSEventRunModal + 217
        36  GraphicsServices                    0x01006289 GSEventRun + 115
        37  UIKit                               0x0002ec93 UIApplicationMain + 1160
        38  Cypher Bot                          0x00002889 main + 121
        39  Cypher Bot                          0x00002805 start + 53
        40  ???                                 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
sharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
(gdb)**
>

Изменения, которые я внес в третийпросмотр контроллера перед этим был:

  1. Добавить поддержку ландшафта
  2. Добавить событие предупреждения памяти
  3. Добавить функцию, которая позволяет открывать приложение SMS (у меня естьудалил это, и затем я запустил проект, но ничего не произошло)

РЕДАКТИРОВАТЬ: я включил файл заголовка:

#import <UIKit/UIKit.h>


@interface ThirdViewController : UIViewController {
    IBOutlet UIView *landscapeView;
    IBOutlet UIView *portraitView;

}

@property (nonatomic, retain) IBOutlet UIView *landscapeView;

@property (nonatomic, retain) IBOutlet UIView *portraitView;
@end

@properties используются с @synthesize и тамнет ошибок или предупреждений в проекте.

РЕДАКТИРОВАТЬ 2: Я удалил все, что связано с PortraitView и LandscapeView и теперь, когда я запускаю его и нажимаю More, я получаю следующее:

**Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Spencer/Library/Application Support/iPhone Simulator/4.3.2/Applications/1E0A4C15-2143-442D-A8FC-4AE36CFC90E4/Cypher Bot.app> (loaded)' with name 'ThirdViewController.xib''**

Что зая не так делаю?Почему я не могу нажать на третью вкладку?

Любая помощь приветствуется!Спасибо!

Ответы [ 3 ]

4 голосов
/ 03 июля 2011

Похоже, что ваш nib-файл пытается связать что-либо с выходом с именем portraitView на UIViewController, но UIViewController не имеет такого свойства. Я предполагаю, что вам нужно зайти в IB и изменить класс на этом контроллере представления на любой подкласс UIViewController в вашем приложении, как это должно быть.

1 голос
/ 03 июля 2011

IB Snapshot

Вот мой взгляд в Интерфейсном Разработчике. «Владелец файла» должен быть установлен на соответствующий контроллер представления, в вашем случае он должен сказать «ThirdViewController» здесь. Убедитесь, что вы ссылаетесь на правильный контроллер вида.

Также проверьте код, где вы добавляете этот контроллер представления к панели вкладок. Вы запускаете UIViewController или ThirdViewController? Убедитесь, что это ThirdViewController.

0 голосов
/ 03 июля 2011

Возможно, вы изменили имя переменной в коде после того, как перетащили представление в конструкторе интерфейсов в эту переменную, что вызывает такие ошибки.Чтобы исправить это, вы должны перетащить его снова, возможно, у вас есть метка объяснения в построителе интерфейса в этом свойстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...