2015-11-11 4 views
0

Я скопировал пример кода, чтобы создать таблицу-цель в моем приложении (http://www.appcoda.com/uitableview-tutorial-storyboard-xcode5/). Пример отлично работает.Как заполнить представление таблицы с помощью NSMutableArray

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

Мое приложение генерирует список титрах фильма в:

NSMutableArray *creditList; 

В viewDidLoad у меня есть:

creditList = [NSMutableArray arrayWithObjects:@"Test Movie 1", nil]; 

Затем я генерировать список фильмов. Когда цикл завершится, список правильно хранится в массиве creditList, как определено:

NSLog(@"creditList array: %@", creditList); 

Как я теперь заполнить таблицу со списком элементов сгенерирован и где бы я поставить этот код?

Спасибо заранее, Lee

ответ

1

Вы можете использовать NSMutableArray же, как NSArray. Не нужно ничего делать.

После создания предметов. Вам просто нужно позвонить:

[tableView reloadData];

+0

Спасибо за ваш ответ. Когда я помещаю этот код в viewDidLoad после инструкции NSLOG, я получаю «Неизвестный приемник» tableview », вы имели в виду« UITableView »?» Если я изменю его на UITableView, тогда я получаю «Неизвестный метод класса для селектора reloadData». – Lee

+0

'tableView' является обработчиком' UITableView'. – anhtu

+0

'[tableView reloadData];' .. Это помогло – Jamil

3

Так вот шаги

  1. первых вы должны иметь TableView и имеют многоразовый идентификатор в данном случае я просто назвал его «клетка» enter image description here
  2. Поскольку у вас уже есть массив и значения в массиве, вы должны теперь установить разделы и строки, как вы можете видеть в этом коде

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
        return 1;  
        } 
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
         return creditList.count; 
        } 
    
  3. теперь вы должны установить фактическую ячейку с этим кодом

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 
    
        cell.textLabel.text = [[creditList objectAtIndex:indexPath.row] capitalizedString]; 
    
        return cell; 
        } 
    
+1

Спасибо за ваши шаги. Поскольку они были по существу теми же шагами в приведенной ссылке, я получаю тот же результат (который вы показываете на шаге 4), где показаны только начальное содержимое массива, а не полный массив, который я вижу при использовании: NSLog (@ "creditList array:% @", creditList); – Lee

+0

Привет @lee, так что в основном вы получаете фильмы с веб-сервиса? –

+0

Да, Cesar, они вытягиваются с использованием API TMDb и возвращаются как ответ JSON. Вот код, который заполняет массив: while (myCount Lee

0

Чтобы заполнить таблицу с данными общий шаблон проектирования использовать это UITableViewDelegate, в вашей реализации (.m) файл добавить делегатов следующим образом:

@interface ViewController() <UITableViewDelegate, UITableViewDataSource> 

Затем вызовите две функции в одном файле ViewController.m, первый из которых является:

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

Вторая функция:

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

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName]; 

     if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName]; 
     } 

     cell.textLabel.text = [_creditList objectAtIndex:indexPath.row]; 
     NSLog(@"cell label created"); 

     return cell; 
    } 

Вам нужно будет установить DataSource и делегат в раскадровку, который вы можете вы можете сделать, щелкнув правой кнопкой мыши и перетаскивая вид таблицы со значком желтого ViewController и выбора как делегат, так и источник данных.

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

+0

Спасибо за ваш всесторонний ответ. Все, что вы подробно описали, было почти линией для линии, что у меня было, и было в ссылке, которую я предоставил в примере, который я использовал. К сожалению, из-за этого все, что я все еще показываю на столе, это «Test Movie 1». – Lee

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