представление таблицы всегда обновляется дважды и завершается ошибкой во 2-й раз - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть класс FoodType, который читает NSArray словарей из списка свойств. Он хранит отношения целочисленных значений и имен NSString.

Когда я добавляю новую запись, я инициирую запись со значениями по умолчанию, использую класс FoodType для извлечения соответствующих строк и отображения их в «представлении добавления записи».

Каждый раз, когда я открываю представление «Добавить запись» (это подкласс таблицы), все ячейки обновляются дважды. (Я узнал об этом, имея точку останова в cellForRowAtIndexPath).

Тогда возникает проблема. Отладчик показывает мне, что в первый раз тексты ячеек установлены правильно. Но во второй раз тот же фрагмент кода не может получить строку. Сбой означает, что он возвращает ноль. Это код в cellForRowAtIndexPath: (запись является переменной класса)

cell.detailTextLabel.text = [FoodTypes TypeName:record.TypeId];

Класс FoodTypes объявлен как

@interface FoodTypes : NSObject {       
}

+(NSString*) TypeName: (NSNumber *) Type;
+(NSArray*) SubTypes: (NSNumber *)Type;
+(NSString*) SubType: (NSNumber *)Type atIndex:(NSNumber*)index;
+(NSString*) Unit: (NSNumber *) Type;
+(NSInteger) TypeCount;
@end

И у него есть static NSArray *foodTypes_; в файле .m. Я не знаю, почему таблица обновляется дважды, и это должно произойти дважды? (record.TypeId соответствует)

Самая большая проблема в том, что я не знаю, почему [FoodTypes TypeName] работает в первый раз, но возвращает nil (спасибо Eiko) во второй раз.


код при добавлении записи:

FoodAddViewController *favCtrl = [[FoodAddViewController alloc] initWithNibName:@"FoodDetailView" bundle:nil];        
    favCtrl.delegate = self;

    NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
    self.addingManagedObjectContext = addingContext;       

    [addingManagedObjectContext setPersistentStoreCoordinator:[[fetchedResultsController managedObjectContext] persistentStoreCoordinator]];

    favCtrl.record = (FeedRecordClass*)[NSEntityDescription insertNewObjectForEntityForName:@"FeedRecord" inManagedObjectContext:addingContext] ;

    [favCtrl.record init];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: favCtrl];

    [self.navigationController presentModalViewController:navController animated:YES];    

    [favCtrl release];
    [addingContext release];
    [navController release];

1 Ответ

0 голосов
/ 25 апреля 2011

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

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