Разработка для iOS: сбой при загрузке UITableViewController, и в консоли нет ошибок - PullRequest
0 голосов
/ 03 января 2011

Последние два часа я потратил на то, чтобы сыграть большую часть кода, и я не могу понять, почему происходит сбой, плюс в консоли или отладчике нет сообщений об ошибках или каких-либо полезных данных.Я просто пытаюсь загрузить контроллер представления, который наследуется от UITableViewController, и его единственный экземпляр var является объектом UITableView.Вот код класса ...

@interface PlayFriendViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
{
 IBOutlet UITableView *rootTableView;
}

@property (nonatomic, retain) IBOutlet UITableView *rootTableView;

@end

Вот код, который загружает его и помещает в стек ....

 PlayFriendViewController *pfvc = [[PlayFriendViewController alloc] initWithNibName:@"PlayFriendView_iPhone" bundle:nil];
 [self.navigationController pushViewController:pfvc animated:YES]; //<--Crashes here
 [pfvc release];

и вот соответствующая часть стека вызовов....

0   libSystem.B.dylib              0x33bd52d4 __kill + 8
1   libSystem.B.dylib              0x33bd52c4 kill + 4
2   libSystem.B.dylib              0x33bd52b6 raise + 10
3   libSystem.B.dylib              0x33be9d72 abort + 50
4   libstdc++.6.dylib              0x31bdba20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                0x3347c594 _objc_terminate + 104
6   libstdc++.6.dylib              0x31bd9df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib              0x31bd9e46 std::terminate() + 10
8   libstdc++.6.dylib              0x31bd9f16 __cxa_throw + 78
9   libobjc.A.dylib                0x3347b4c4 objc_exception_throw + 64
10  CoreFoundation                 0x33ac07c2 +[NSException raise:format:arguments:] + 62
11  CoreFoundation                 0x33ac07fc +[NSException raise:format:] + 28
12  UIKit                          0x320e4118 -[UITableViewController loadView] + 188
13  UIKit                          0x320a0220 -[UIViewController view] + 24
14  UIKit                          0x320acd04 -[UIViewController contentScrollView] + 16
15  UIKit                          0x320acb74 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 24
16  UIKit                          0x320aca72 -[UINavigationController _layoutViewController:] + 18
17  UIKit                          0x320ac54a -[UINavigationController _startTransition:fromViewController:toViewController:] + 374
18  UIKit                          0x320ac358 -[UINavigationController _startDeferredTransitionIfNeeded] + 176
19  UIKit                          0x320a00be -[UINavigationController pushViewController:transition:forceImmediate:] + 634
20  UIKit                          0x3209fe34 -[UINavigationController pushViewController:animated:] + 28

Одно замечание: Когда я удаляю экземпляр UITableView var и все соединения с ним, представление загружается успешно.Ничего не видно, но, по крайней мере, это не дает сбоя.

Есть идеи, что происходит или как я могу получить дополнительную информацию об этом сбое?

Большое спасибо за вашу мудрость!

Ответы [ 4 ]

1 голос
/ 03 января 2011

Исправлена ​​проблема, и, как и все действительно загадочные ошибки, это было глупо. Я думаю, я не чувствую себя так плохо, так как никто другой не поймал его, но мой контроллер представления должен быть подклассом UIViewController, а не UITableViewController, так как объект UITableView является экземпляром var моего класса, а мой Контроллер view придерживается соответствующих протоколов. Во всяком случае, исправил это, теперь это работает. Эта глупая ошибка заняла у меня всего два часа, чтобы исправить ... тьфу.

1 голос
/ 03 января 2011

Ошибка возникает, когда новый viewController пытается загрузить представление, что подразумевает наличие какой-либо проблемы с .xib или, что более вероятно, с подключением к .xib.

Я бы предположил, что ваш UITableView в .xib указывает на недопустимый делегат или источник данных, или, что более вероятно, выход указывает на то, чего не существует. Возможно, вы изменили название розетки tableView или viewController.

1 голос
/ 03 января 2011

В консоли должно быть зарегистрировано исключение, но если оно каким-то образом не достигает его, попробуйте поместить строку сбоя в блок @try {} @catch () {}, распечатать исключение, а затем завершить (или нет).

1 голос
/ 03 января 2011

Вы @ синтезируете rootTableView?

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