在ViewDidAppear中填充TableView

时间:2013-11-14 18:16:22

标签: ios iphone objective-c

我正在尝试做我认为简单的事情,但看起来很复杂。

我正在尝试创建排行榜屏幕。

我有以下内容:

NSArray* playerNames
NSArray* playerScores

我的排行榜选项卡是一个viewcontroller。在里面,它有一个tableview。 tableview有一个插座。

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

@interface LeaderboardViewController : UIViewController
{

}
- (void)viewDidAppear:(BOOL)animated;
- (void) viewWillDisappear:(BOOL)animated;
@property (weak, nonatomic) IBOutlet UITableView *leaderboardTable;
- (SimonGameModel*) model;
@end

当视图加载时,我从我的模型中得到上面的2个数组(两个长度相同)。它们对应于最新的分数。

我需要的是每个表格单元格中包含2个标签,这样我最终得到的排行榜看起来像这样:

Tim            200
John           100
Jack            50

等...

我一直在阅读苹果的文档近一个小时,我对如何做到这一点很困惑。

我用我想要的标签创建了一个原型。

由于

2 个答案:

答案 0 :(得分:1)

-(void)viewDidLoad {
   [leaderboardTable setDataSource:self];
   [leaderboardTable setDelegate:self];
 }

您必须以这种方式创建自定义单元格:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

 return [playerNames count];
}


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


     static NSString *CellIdentifier = @"leader";
     UITableViewCell *cell = [leaderboardTable dequeueReusableCellWithIdentifier:CellIdentifier];

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

 UILabel *labelName = [[UILabel alloc] initWhitFrame:CGRectMake(5, 0,160,44);
 [labelName setTextAlignment:NSTextAlignmentLeft];
 labelName.textColor = [UIColor blackColor];
 [cell.contentView addSubView:labelName];

 UILabel *labelValue = [[UILabel alloc] initWhitFrame:CGRectMake(165, 0, 150, 44);
 [labelValue setTextAlignment:NSTextAlignmentRight];
 labelValue.textColor = [UIColor blackColor];
 [cell.contentView addSubView:labelValue];

  }

 labelName.text = [playerNames objectAtIndex:indexPath.row];
 labelValue.text = [playerScores objectAtIndex:indexPath.row];

 return cell;
}

答案 1 :(得分:0)

听起来您没有将LeaderboardViewController设置为tableview的dataSource。 LeaderboardViewController必须符合UITableViewDataSource协议:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006941

另外,请记住使用tableview注册UITableViewCell xib或类。

您将使用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

中数组中的数据填充单元格