0

当我再次向下和向上滚动时,tableView 中的文本将消失。

在此处输入图像描述 在此处输入图像描述

我的代码是:

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

    return [screenDefBuild.elementsToTableView count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
    }

    ScreenListElements *currentScreenElement = [screenDefBuild.elementsToTableView objectAtIndex:indexPath.row];
    cell.textLabel.text = currentScreenElement.objectName;

    currentRow++;    
    return cell;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
    [tableView setDataSource:self];
    [self.view addSubview:tableView];
}

我还想将我的表格视图填充到整个屏幕。(顶部的灰色表带)。

4

2 回答 2

2

我不知道你在用这个变量做什么

currentRow++;

但无论你用它做什么,我敢打赌它会破坏你的代码。

每当一个单元格即将出现在屏幕上时,无论它之前是否出现在屏幕上,UITableView都会调用。cellForRowAtIndexPath当您向下滚动然后向上滚动时,此变量将增加超出数据的范围,因此您会得到空单元格。

您需要设计此方法,使其可以随时在表格视图中创建任何单元格。您不能依赖制作单元格的顺序,并且通过滚动,您将不得不一遍又一遍地制作相同的单元格。仅用于indexPath确定您当前应该制作的单元格。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html

于 2012-04-23T08:24:44.757 回答
0

回答问题的第二部分 - 灰色表带。您正在将表格视图添加到当前视图,因此您应该使用原点的 size 属性,self.view.frame而不是原点。您希望将其设置为 0,0。

改变

tableView = [[UITableView alloc] initWithFrame:self.view.bounds];

CGRect viewFrame=self.view.frame;
viewFrame.origin=CGPointZero;
tableView = [[UITableView alloc] initWithFrame:viewFrame]; 

至于你问题的第一部分 - 这很奇怪,因为你似乎做的一切都正确。我可能建议的一件事是[tableView reloadData];viewDidLoad.

于 2012-04-23T08:36:21.807 回答