我正在尝试做我认为简单的事情,但看起来很复杂。
我正在尝试创建排行榜屏幕。
我有以下内容:
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
等...
我一直在阅读苹果的文档近一个小时,我对如何做到这一点很困惑。
我用我想要的标签创建了一个原型。
由于
答案 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
协议:
另外,请记住使用tableview注册UITableViewCell xib或类。
您将使用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath