我复制了示例代码,在我的应用中创建了一个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);
现在如何使用生成的项目列表填充表格以及我将该代码放在哪里?
提前致谢, 利
答案 0 :(得分:3)
以下是步骤
由于您已经拥有数组和数组中的值,您现在可以设置这些部分和行,如此代码中所示
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return creditList.count;
}
现在您必须使用此代码设置实际单元格
- (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图标并选择委托和数据源来完成。
完成此操作后,如果您的数组中填充了字符串,则应在运行应用时看到表视图中列出的项目。