Добавление данных в табличное представление с использованием NSMutableArray - PullRequest
1 голос
/ 15 февраля 2012

У меня проблема с добавлением элемента в tableView.

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

Инициализация tableView:

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:nil];
self.listArray = array;

Источник данных TableView:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [self.listArray count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    if(section == 0)
        return @"Eingescannte Artikel:";
    else
        return nil;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"testCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    // Configure the cell...
    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listArray objectAtIndex:row];//[NSString stringWithFormat:@"Das ist Zeile %i", indexPath.row];
    return cell;
}

(Не все, но те, которые я изменил)

Как вы могли видеть, я использую NSMutableArray для добавления элементов в мой tableView.

Итак, если элемент не отсканирован, я добавляю его в свой массив следующим образом:

[listArray insertObject:sharedGS.strEAN atIndex:0]; //using a shared Instance where I implemented my variable.

Я также пытался использовать переменную для расширения моего индекса каждый раз, когда добавляется новый элемент, но он не будет работать в обоих направлениях.

Я довольно новичок в программировании, поэтому не слишком сложный для понимания ответ был бы неплохо;)

Если какая-либо информация отсутствует, не стесняйтесь спрашивать.

/ edit: пытаюсь задать мой вопрос: данные из переменной записываются в TableViewCell, но если я сканирую другой, другой просто заменяется. Не уверен, что это проблема моего массива или моего tableView ...

/ edit № 2: Обнаружил (благодаря fzwo), что мой массив работает неправильно. Он просто не растет с помощью команды addObject: или insertObject: atIndex :. Но я просто не понимаю, почему ... :( Все, что я делаю: [listArray addObject:sharedGS.strEAN]; не так много места для ошибок в одной простой строке. Может быть, я просто слишком глуп, чтобы понять, что я делаю неправильно: D

1 Ответ

1 голос
/ 15 февраля 2012

Вы заявляете, что ваша проблема заключается в «добавлении элемента в мой tableView», так как вы добавляете объект в свой массив, я предполагаю, что проблема заключается в том, что вы не перезагружаете таблицу или в ней отсутствует привязка dataSource.

Вы на самом деле не задавали ни одного вопроса (даже если вы добавили информацию, чтобы "указать свой вопрос"), поэтому дикая догадка после

[listArray insertObject:sharedGS.strEAN atIndex:0];

поместить

[yourTableView reloadData];

Вы намеренно добавляете новые предметы в начало таблицы? в противном случае вы могли бы сделать [listArray addObject:sharedGS.strEAN]; чтобы добавить новые элементы в конец

В противном случае стоит отметить, что вы неправильно используете dequeueReusableCellWithIdentifier, посмотрите на пример ниже для правильного использования:

// Try to retrieve from the table view a now-unused cell with the given identifier
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

// If no cell is available, create a new one using the given identifier
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...