Я знаю, что этот вопрос задавался ранее, и я потратил много времени, следуя предложениям в различных темах, не только на этом сайте, но безрезультатно.
Я разрабатываю приложение дляiPad, который состоит из нескольких просмотров.Каждое из этих представлений содержит UITableView.Некоторые из ячеек TableView содержат пользовательские ячейки, реализованные с помощью UITableViewCell.Проблема в том, что я могу без проблем запускать свое приложение на симуляторе iPad, но не на реальном устройстве.На устройстве - как только я пытаюсь получить доступ к представлению, которое содержит этот пользовательский UITableViewCell, о котором идет речь, оно вылетает со следующим сообщением:
2011-08-03 20:37:13.849 myApp[658:707] Creating cell: LabledTextFieldCell.xib
2011-08-03 20:37:13.866 myApp[658:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/B9A24738-FA19-4A54-8CE5-813B48E6871E/iCockpit-Client.app> (loaded)' with name 'LabledTextFieldCell.xib''
Я проверил и перепроверил, и все, кажется, видеальный заказ.Файл существует - как в XCode, так и физически в файловой системе, и на него в коде указано правильное имя.
Вот строка кода, в которой происходит сбой:
[[NSBundle mainBundle] loadNibNamed:MyIdentifier owner:self options:nil];
В более широком контексте:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
int curRow = indexPath.row;
int i = 0;
if (indexPath.section > 0) {
while (i < indexPath.section) {
curRow = curRow + [self sectionSize:i];
i++;
}
}
UITableViewCell *cellRet;
if (indexPath.section == 1) {
// code
} else if (indexPath.section == 2) {
// ...
} else if (indexPath.section == 3) {
static NSString *MyIdentifier = @"LabledSwitchCell";
NSLog(@"Creating cell: %@", MyIdentifier);
cellRet = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cellRet == nil) {
// CRASHES
// -------
[[NSBundle mainBundle] loadNibNamed:MyIdentifier owner:self options:nil];
// -------
cellRet = self.cell;
self.cell = nil;
}
// more code...
}
Что может стоить отметить: перо было изначально добавлено через подкласс File -> New -> New File ..., Cocoa Touch -> UIViewController, который предоставляет трифайлы - MyClassViewController.m, MyClassViewController.h и MyClassViewController.xib.Я переименовал MyClassViewController.xib (в моем случае LabledTextfieldViewController.xib) в MyClassView.xib (LabledTextfieldView.xib), что показалось мне более логичным.
Как указано выше, приложение работает в симуляторе нормально,проблема возникает только на реальном устройстве.
Моя версия XCode является последней версией Xcode 4.1 (Build 4B110).
Заранее спасибо.Любая помощь с благодарностью!