0

如何将 UITableView 添加到现有视图?

我已经通过界面生成器添加了控件,并将正确的委托添加到主机视图控制器(包括将表格单元功能添加到 .m 文件)

但是什么都没有被调用,也没有任何东西被填充,cellForRowAtIndexPath例如,函数永远不会被调用。

在 .h 文件中

@interface GameViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

@property (weak, nonatomic) IBOutlet UITableView *friendsScoresView;

在 .m 文件中

init {
    _friendsScoresView.delegate = self;
    _friendsScoresView.dataSource = self;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // return number of rows
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyBasicCell"];
    //NSMutableArray *nearbyScores = gclb->nearbyScores;

    GCLeaderboardScore *playerScore = [gclb->nearbyScores objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%f",playerScore->score ];
    cell.imageView.image = playerScore->photo;
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // handle table view selection
}

我错过了什么?另外我如何告诉表格更新/刷新其内容?

4

1 回答 1

1

如果您UITableViewController在 IB 中添加了,则单击右侧的 outlets 选项卡并在 IB 中连接 DataSource 和 Delegate。如果您想在代码中执行此操作,IBOutlet请为您的表创建一个变量并在您的变量上设置委托和数据源属性。此外,由于尚未加载 NIB ,因此您无法在init上执行此操作。UIViewController做它viewDidLoad

于 2013-10-13T15:26:37.687 回答