0

我正在尝试做我认为很简单的事情,但似乎很复杂。

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

我有以下内容:

NSArray* playerNames
NSArray* playerScores

我的排行榜选项卡是一个视图控制器。在里面,它有一个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

ETC...

我已经阅读了苹果的文档将近一个小时,我对如何做到这一点感到困惑。

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

谢谢

4

2 回答 2

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

you must create your custom cell in this way:

- (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;
}
于 2013-11-14T18:28:04.657 回答
0

It sounds like you have not set your LeaderboardViewController as your tableview's dataSource. LeaderboardViewController will have to conform to the UITableViewDataSource protocol:

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

Also, remember to register a UITableViewCell xib or class with your tableview.

You will be populating your cells with data from your arrays in - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

于 2013-11-14T18:26:15.677 回答