0

カスタムセルが入力されたテーブルの上部にさらにセルをロードする必要があります。最初にテーブルにデータを入力するときはすべて問題ありません。オーバーラップも問題もありません。さらにセルをロードしようとすると、このセルが表示されますが、高さが間違っていますそして、セルの変更位置をランダムにスクロールしようとすると! これは私のコードです。どこが間違っていますか?

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

    return [self.arrayMessaggi count] + 1;
}

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (indexPath.row == 0) {

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

            UILabel *labelLoad = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
            [labelLoad setBackgroundColor:[UIColor clearColor]];
            [labelLoad setTextAlignment:NSTextAlignmentCenter];
            [labelLoad setText:[NSString stringWithFormat:@"%d - Load more...",indexPath.row]];
            [labelLoad setText:@"Load more..."];
            [labelLoad setTag:3];
            [cell.contentView addSubview:labelLoad];
        }

        UILabel *labelLoad = (UILabel *)[cell.contentView viewWithTag:3];
        [labelLoad setText:[NSString stringWithFormat:@"%d - Load more...",indexPath.row]];

    }
    else {

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

            PFObject *obj = [self.arrayMessaggi objectAtIndex:indexPath.row - 1];
            PFUser *user = [obj objectForKey:@"daUtente"];

            float height = [self getStringHeight:[obj objectForKey:@"TestoMessaggio"] andFont:[UIFont systemFontOfSize:13]];

            UILabel *labelUser = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 280, 20)];
            [labelUser setBackgroundColor:[UIColor clearColor]];
            [labelUser setText:[user objectForKey:@"username"]];
            [labelUser setFont:[UIFont systemFontOfSize:13]];
            [labelUser setTag:1];
            [cell.contentView addSubview:labelUser];

        }

        PFObject *obj = [self.arrayMessaggi objectAtIndex:indexPath.row - 1];
        PFUser *user = [obj objectForKey:@"daUtente"];

        UILabel *labelUser = (UILabel *)[cell.contentView viewWithTag:1];

        [labelUser setText:[NSString stringWithFormat:@"%d - %@",indexPath.row,[user objectForKey:@"username"]]];


    }

    return cell;
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    float height = 44;

    if (indexPath.row > 0) {

        PFObject *obj = [self.arrayMessaggi objectAtIndex:indexPath.row - 1];
        NSString *text = [obj objectForKey:@"TestoMessaggio"];
        height = 30 + [self getStringHeight:text andFont:[UIFont systemFontOfSize:13]] + 10;
    }

    return height;
}

- (void) setPullDownToRefresh {

    refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(aggiornaTabella:) forControlEvents:UIControlEventValueChanged];
    [self.messagesTableView addSubview:refreshControl];

}
- (void) aggiornaTabella:(UIRefreshControl *)myRefreshControl {

    self.arrayMessaggi = [NSMutableArray arrayWithArray:objects];
    self.messagesTableView = [[UITableView alloc] init];
    [self.messagesTableView reload data];
}
4

0 に答える 0