0

私の問題は、table( ) の最初のセルを除いて、UITableview セル間にカスタム設計の区切り線を追加したいことですindexPath.row=0。テーブルを初めてリロードするとき、次のコードは問題ないようです。ただし、下にスクロールして上にスクロールすると、テーブルの最初のセルの上部にカスタム区切り線が表示されます。値をindexpath.row出力したところ、上にスクロールすると、テーブルの最初のセルが で再構築されることがわかりましたindexpath.row=7。解決策はありますか?返信ありがとうございます:)私のコードは次のとおりです。

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

static NSString *CellIdentifier = @"CustomCellIdentifier";

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = (CustomCell *)[CustomCell cellFromNibNamed:@"CustomTwitterCell"];
}

if(indexPath.row!=0) 
{

   UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 2.5)];

    lineView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"line.png"]];

    [cell.contentView addSubview:lineView];

    [lineView release];
}

    NSDictionary *tweet;

    tweet= [twitterTableArray objectAtIndex:indexPath.row];

    cell.twitterTextLabel.text=[tweet objectForKey:@"text"];
    cell.customSubLabel.text=[NSString stringWithFormat:@"%d",indexpath.row];
}
4

1 に答える 1

1

テーブルは区切り線で作成された再利用されたセルを使用するため、2 つの CellIdentifier を最初の行に 1 つ、残りすべてにもう 1 つ使用できます。

次のようなものを試してください(コードをテストしませんでしたが、動作するはずです):

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

    static NSString *FirstCellIdentifier = @"FirstCellIdentifier";
    static NSString *OthersCellIdentifier = @"OthersCellIdentifier";

    NSString *cellIndentitier = indexPath.row == 0 ? FirstCellIdentifier : OthersCellIdentifier;

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentitier];
    if (cell == nil) {
        cell = (CustomCell *)[CustomCell cellFromNibNamed:cellIndentitier];

        if(indexPath.row!=0) {
            UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 2.5)];

            lineView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"line.png"]];

            [cell.contentView addSubview:lineView];

            [lineView release];
        }
    }

    NSDictionary *tweet;

    NSDictionary *tweet= [twitterTableArray objectAtIndex:indexPath.row];

    cell.twitterTextLabel.text = [tweet objectForKey:@"text"];
    cell.customSubLabel.text = [NSString stringWithFormat:@"%d",indexpath.row];
}
于 2013-07-28T11:52:32.300 に答える