如何使用NSMutableArray填充表视图

时间:2015-11-11 02:17:11

标签: ios objective-c arrays uitableview nsmutablearray

我复制了示例代码,在我的应用中创建了一个objective-c表(http://www.appcoda.com/uitableview-tutorial-storyboard-xcode5/)。这个例子效果很好。

我遇到的问题是该示例使用预定义的项目数组,但我的应用程序在加载视图控制器时会生成数组项列表。

我的应用正在生成一个电影信用列表:

NSMutableArray *creditList;

在viewDidLoad中我有:

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

然后我生成电影列表。循环完成后,列表将正确存储在数组creditList中,具体取决于:

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

现在如何使用生成的项目列表填充表格以及我将该代码放在哪里?

提前致谢, 利

3 个答案:

答案 0 :(得分:3)

以下是步骤

  1. 首先你必须拥有tableview并拥有一个可重复使用的标识符,在这种情况下我只是称之为" cell" 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 :(得分:1)

您可以使用与NSMutableArray相同的NSArray。无需再做任何事情。

生成项目后。你只需要打电话:

[tableView reloadData];

答案 2 :(得分: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图标并选择委托和数据源来完成。

完成此操作后,如果您的数组中填充了字符串,则应在运行应用时看到表视图中列出的项目。