2014-10-16 2 views
0

У меня проблема с моим табличным представлением. Я добавил кучу элементов в массив и попросил tableView заполнить себя этими элементами из массива, он работал нормально, но когда я изменил индексы (заказы) элементов в массиве, tableView не отображал элементы правильно , Я знал, что мои массивы и заказы на их товары работали так, как я ожидал, потому что NSLogs мне так сказали. Может ли кто-нибудь помочь мне в этом? Заранее спасибо!TableView не извлекает элементы из массива

Это метод, который я использовал, чтобы добавить новый пункт:

- (IBAction)AddNewItem:(id)sender{ 
    BNRItem *newItem = [[VKItemStore sharedStore] createItem]; 
    NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lastRow inSection:0]; 
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; 
} 

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath]; 
    NSMutableArray *items = [VKItemStore sharedStore].itemsArray; 

    if (items.count == 2) { 
     items[0] = items[1]; 
     items[1] = [VKItemStore sharedStore].item; 
    } 

    NSLog(@"AFTER ARRAY: %@", items); 
    BNRItem *item = items[indexPath.row]; 
    cell.textLabel.text = [item description]; 
    return cell; 
} 
+0

Я думаю, что внутри AddNewItem: метод, который вы добавляете деталь в itemsArray и в вашем cellForRowAtIndexPath: метод доступа к элемент из массива privateItems. – iHulk

+0

Как я понимаю, ваш код всегда добавляет новую строку в конец таблицы. Что вы хотите? если ваша таблица не обновляется, вы можете попробовать этот код. [self.tableView beginUpdates]; [self.tableView insertRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationTop]; [self.tableView endUpdates]; – muhammedkasva

+0

На самом деле это опечатка, которую я сделал, privateItems и itemsArray - это точно то же самое, я обновил код для вас сейчас, пожалуйста, посмотрите. Благодаря! @iDeveloper – Alvarez

ответ

0

Изменить Вам, если блок с этим код может быть, это поможет вам

if (items.count == 2) { 
     BNRItem *item = items[0]; 
     items[0] = items[1]; 
     items[1] = item; 
    } 

Потому что ваш [VKItemStore sharedStore] .item будет иметь ваш текущий пункт это последний объект ваших элементов массива [1]. и вы храните его в элементах [1] того же объекта. поэтому попробуйте приведенный выше код, возможно, это поможет вам.

+0

Я должен был назвать их по-другому, хотя бы избежать путаницы. На самом деле, [VKItemStore sharedStore] .item - это уникальный элемент, который я предопределл для своего массива, так что каждый раз, когда приложение запускается, этот уникальный элемент всегда появляется в таблицеView. На этом этапе addNewItem: не был вызван. Когда я его вызываю, он добавляет новый элемент в существующий массив и ниже этого [VKItemStore sharedStore] .item, и я попытался изменить их индексы. NSLogs показал мне, что массив был обновлен, но tableView не получал никаких обновлений из нового массива! Пожалуйста помоги! Благодаря ! @iDeveloper – Alvarez

+0

попытайтесь изменить строку [self.tableView insertRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationTop]; с [self.tableView reloadData]; – iHulk

+0

В соответствии с вашим кодом, я заметил, что вы должны получать один и тот же элемент (элемент [0]) в обеих строках таблицы после добавления одного из них, потому что вы только перезагружаете таблицу для indexPath.row = 1 не для 0, так что 0 останется то же, и строка 1 будет заполнена элементом [0]. Надеюсь, я прав, если не скажу мне результат вашего стола. – iHulk

0

Изменить эту строку кода:

NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem]; 

так, что она становится:

NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem] - 1; 
Смежные вопросы