2012-04-30 3 views
3

У меня есть текстовое поле, где я ввожу значение и сохраняю его и извлекаю в tableView. последний сохраненный элемент показан внизу таблицы. Но я хочу, чтобы он отображался в верхней части таблицы.добавить новую строку в начало UITableView при использовании данных ядра

Я попробовал следующий код, но не смог.

- (void)viewDidLoad 
{ 

    CoreDataOneAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 
    NSEntityDescription *entityDesc = 
    [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:context]; 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:entityDesc]; 
    NSError *error; 
    objects = [[context executeFetchRequest:request error:&error]retain]; 
    [request release]; 
    [super viewDidLoad]; 
} 



-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [objects count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    labelOne = [[UILabel alloc]initWithFrame:CGRectMake(5, 11, 110, 21)]; 
    labelTwo = [[UILabel alloc]initWithFrame:CGRectMake(230, 11, 70, 21)]; 

    static NSString *cellIdentifier = @"CellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier]autorelease]; 
    } 

    [cell.contentView addSubview:labelTwo]; 
    [cell.contentView addSubview:labelOne]; 

    NSManagedObject *matches = nil; 
    matches = [objects objectAtIndex:indexPath.row]; 

    labelOne.text = [matches valueForKey:@"name"]; 
    labelTwo.text = [matches valueForKey:@"amount"]; 

    NSArray *index = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]]; 
    [tableView insertRowsAtIndexPaths:index withRowAnimation:YES]; 

    return cell; 
} 

// Сохранение

-(IBAction)save:(id)sender 
{ 
CoreDataOneAppDelegate *appDelegate = 
[[UIApplication sharedApplication] delegate]; 

NSManagedObjectContext *context = 
[appDelegate managedObjectContext]; 
NSManagedObject *newContact; 
newContact = [NSEntityDescription 
       insertNewObjectForEntityForName:@"Employee" 
       inManagedObjectContext:context]; 
[newContact setValue:name.text forKey:@"name"]; 
[newContact setValue:amount.text forKey:@"amount"]; 
name.text = @""; 
amount.text = @""; 
//label 
status.text = @"saved"; 
NSError *error; 
[context save:&error]; 
} 

ответ

6

Я предполагаю, что вы где-то делать [objects addObject:newEntry]. Измените это на [objects insertObject:newEntry atIndex:0].

+0

Я очень новичок в xcode.so, пожалуйста, не возражаете, я прошу u dumb questions.i didnt использовать [objects addObject: newEntry]. где-нибудь в моем коде. Я отправил оставшийся код too.please проверить и помочь! – Sekhar

+0

Код, который вы опубликовали, касается представления таблицы. Но как насчет кода, который выполняется всякий раз, когда пользователь вводит что-то в текстовое поле? –

+0

код обновлен!. Но я написал этот код для сохранения в другом контроллере. – Sekhar

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