在将索引路径0滚出屏幕之前,索引路径为零的项目不会显示

时间:2013-08-30 07:23:23

标签: objective-c uitableview

我通过为主tableview创建自定义单元格,在tableview的每个单元格中都有一个tableview。问题是我可以看到除第一个之外的所有索引路径的tableview内容。如果我滚动tableview以使第一个单元格退出屏幕并向后滚动第一个单元格,则显示第一个单元格中的内容。

请在下面找到我的代码

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

    return [itemArray count];
}

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

    static NSString *CellIdentifier=@"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
    }
    for (int i=0; i<[itemArray count]; i++) {
        ////NSLog(@"row is %d",i);
        if (indexPath.row==i) {
            cell.textLabel.text=[itemArray objectAtIndex:i];
        }
    }
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

任何人都可以告诉我它为什么会发生。我想在屏幕上看到第一个单元格的内容。

2 个答案:

答案 0 :(得分:1)

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

    return [itemArray count];
}

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

    static NSString *CellIdentifier=@"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
    }
    // why are you using this code in for loop ??
    /*
    for (int i=0; i<[itemArray count]; i++) {
        ////NSLog(@"row is %d",i);
        if (indexPath.row==i) {
            cell.textLabel.text=[itemArray objectAtIndex:i];
        }
    }
    */
    cell.textLabel.text=[itemArray objectAtIndex:indexPath.row];
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

答案 1 :(得分:0)

请按以下方式更新以下方法。它可能会帮助你。并且请确保在itemArray中添加对象后重新加载tableview。

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

static NSString *CellIdentifier = @"Cell";
// add a placeholder cell while waiting on table data
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
    }
    cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
    cell.textLabel.numberOfLines = 1;
    cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
    cell.textLabel.text=[[[DataManager GetInstance]getCurrentTableContent] objectAtIndex:indexPath.row];
}

return cell;